Как мне установить значение float без использования конвертера OGNL?
-
19-09-2019 - |
Вопрос
У меня есть класс, который выглядит примерно так:
public class Foobar {
private float value;
public void setValue(float value) {
this.value = value;
}
}
Затем у меня есть веб-страница (Struts2), которая передается в переменной foobar.value.
<input type="text" name="foobar.value" value="123.456">
Затем я получаю эту ошибку:
ognl.MethodFailedException: Method "setValue" failed for object Foobar@19d373d [java.lang.NoSuchMethodException: setValue([Ljava.lang.String;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)
Я нашел этот веб-сайт, на котором рассказывается о создании конвертеров http://www.opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html
Разве OGNL и Struts2 не поддерживают установку примитивного значения float по умолчанию?
Решение 2
Ладно, я с этим разобрался.Приведенный выше код ДЕЙСТВИТЕЛЬНО работает.Но это НЕ работает.
<input type="text" name="foobar.value" value="-123.456">
По-видимому, OGNL интерпретирует отрицательное число как Строку.Я не уверен, как справиться с этим без конвертера.Приятно знать, что он будет обрабатывать положительные значения float и Float изначально.
Я провел некоторые дополнительные исследования по этому поводу и обнаружил эту ошибку. http://issues.apache.org/struts/browse/WW-2971
Он закрыт, но версии 2.1.8 нет в Maven, и последняя версия Struts2 пока не использует его.:(
Я думаю, что сейчас я напишу конвертер.
Другие советы
Если вы измените значение на Float (объект), сработает ли это?