Pergunta

Eu tenho uma classe que se parece com isso:

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

Em seguida, tenho uma página web (Struts2) que passou em um foobar.value variável.

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

Eu, então, obter este erro:

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

Eu encontrei este site que fala sobre a criação de conversores http: // www. opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html

não OGNL e Struts2 tem suporte para a criação de um flutuador primitiva por padrão?

Foi útil?

Solução 2

OK, eu descobri-lo. O código acima funciona. Mas isso não funciona.

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

interpreta Aparentemente OGNL o número negativo como uma String. Eu não tenho certeza de como lidar com isso sem um conversor. É bom saber que ele vai lidar com flutuador positivo e Float nativamente.

Eu fiz algumas pesquisas adicionais sobre este sobre encontrados este bug. http://issues.apache.org/struts/browse/WW-2971

É fechado, mas a versão 2.1.8 não está na Maven e a última versão do Struts2 não contar com ele ainda. : (

Eu acho que vou estar escrevendo um conversor para agora.

Outras dicas

Se você alterar o valor para Float (o objeto), é que isso funciona?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top