Comment puis-je mettre un flotteur sans utiliser un convertisseur OGNL?
-
19-09-2019 - |
Question
J'ai une classe qui ressemble à ceci:
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 obtiens cette erreur:
ognl.MethodFailedException: Method "setValue" failed for object Foobar@19d373d [java.lang.NoSuchMethodException: setValue([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)
J'ai trouvé ce site qui parle de la création de convertisseurs http: // www. opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html
Ne pas OGNL et Struts2 avoir le soutien pour la fixation d'un flotteur primitif par défaut?
La solution 2
OK, je 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 en tant que chaîne. Je ne sais pas comment faire face à cela sans un convertisseur. Il est bon de savoir qu'il traitera flottant positif et Float nativement.
Je l'ai fait quelques recherches sur ce à propos de ce bug trouvé. http://issues.apache.org/struts/browse/WW-2971
Il est fermé, mais la version 2.1.8 est pas dans Maven et la dernière version de Struts2 ne repose pas sur encore. : (
Je pense que je vais écrire un convertisseur pour l'instant.
Autres conseils
Si vous modifiez la valeur à flotteur (l'objet), est-ce que le travail?