2009-10-02 4 views
0

J'ai une classe qui ressemble à ceci:Comment définir un flottant sans utiliser un convertisseur OGNL?

public class Foobar { 
    private float value; 
    public void setValue(float value) { 
     this.value = value; 
    } 
} 

J'ai alors une page Web (Struts2) qui est passé dans une foobar.value variable.

<input type="text" name="foobar.value" value="123.456"> 

je puis obtenir cette erreur:

ognl.MethodFailedException: Method "setValue" failed for object [email protected] [java.lang.NoSuchMethodException: setValue([Ljava.lang.String;)] 
    at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823) 

Je trouve ce site qui parle de la création de convertisseurs http://www.opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html

N'a pas OGNL et Struts2 avoir le soutien pour la fixation d'un flotteur primitif par défaut?

Répondre

0

OK, je l'ai compris. Le code ci-dessus fonctionne. Mais cela ne fonctionne PAS.

<input type="text" name="foobar.value" value="-123.456"> 

Apparemment, OGNL interprète le nombre négatif comme une chaîne. Je ne suis pas sûr de savoir comment gérer cela sans convertisseur. C'est bon de savoir qu'il va gérer le flotteur positif et Float nativement. J'ai fait d'autres recherches à ce sujet à propos de ce bug. http://issues.apache.org/struts/browse/WW-2971

Il est fermé mais la version 2.1.8 n'est pas dans Maven et la dernière version de Struts2 ne s'en repose pas encore. :(

Je pense que je vais écrire un convertisseur pour l'instant.

0

Si vous modifiez la valeur de Float (l'objet), cela fonctionne-t-il?

+0

Non, je suis passé à un objet flotteur et il ne fonctionne pas. Bonne idée bien. –

+0

Votre action a un getter/setter pour un objet Foobar? – Nate

Questions connexes