Domanda

Ho una classe che assomiglia a questo:

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

Ho poi una pagina web (Struts2) che passava in una foobar.value variabile.

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

Allora ottengo questo errore:

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

Ho trovato questo sito che parla di creazione di convertitori http: // www. opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html

non OGNL e Struts2 avere il supporto per l'impostazione di un galleggiante primitiva di default?

È stato utile?

Soluzione 2

OK, ho capito. Il codice di cui sopra funziona. Ma questo non funziona.

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

A quanto pare OGNL interpreta il numero negativo come String. Non sono sicuro di come affrontare questo senza un convertitore. E 'bello sapere che tratterà float positivo e galleggiante in modo nativo.

Ho fatto qualche ulteriori ricerche su questo circa trovato questo bug. http://issues.apache.org/struts/browse/WW-2971

E 'chiuso, ma la versione 2.1.8 non è in Maven e l'ultima versione di Struts2 non si basa su di esso ancora. : (

Penso che scriverò un convertitore per il momento.

Altri suggerimenti

Se si cambia il valore per Float (l'oggetto), fa quel lavoro?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top