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?

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top