2009-10-02 2 views
0

У меня есть класс, который выглядит следующим образом:Как установить поплавок без использования конвертера OGNL?

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 [email protected] [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 есть поддержка установки примитивного поплавка по умолчанию?

ответ

0

ОК, я понял. Вышеприведенный код работает. Но это НЕ работает.

<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 еще не полагается на нее. :(

Я думаю, что я буду писать конвертер сейчас.

0

Если вы меняете значение на Float (Object), это работает?

+0

Нет, я включил его в объект Float и это не сработало. Хорошая идея, хотя. –

+0

ли ваше действие есть геттер/сеттер для объекта Foobar? – Nate

Смежные вопросы