Como faço para definir um float sem usar um conversor OGNL?
-
19-09-2019 - |
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?
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?