Pregunta

Tengo una clase que tiene este aspecto:

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

Entonces tengo una página web (Struts2) que pasa en una foobar.value variable.

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

A continuación, obtener este error:

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

He encontrado este sitio web que habla de la creación de convertidores http: // www. opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html

no OGNL y Struts2 tener soporte para el establecimiento de un flotador primitiva de forma predeterminada?

¿Fue útil?

Solución 2

De acuerdo, lo he descubierto. El código anterior funciona. Pero esto no funciona.

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

Al parecer OGNL interpreta el número negativo como una cadena. No estoy seguro de cómo hacer frente a esto sin un convertidor. Es bueno saber que se encargará de flotación positiva y flotar de forma nativa.

He hecho un poco más investigación en este encontró sobre este error. http://issues.apache.org/struts/browse/WW-2971

Es cerrada pero la versión 2.1.8 no está en Maven y la última versión de Struts2 no se basa en ella todavía. : (

Creo que voy a estar escribiendo un convertidor de momento.

Otros consejos

Si cambia el valor de flotador (el objeto), funciona eso?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top