Как установить число с плавающей запятой без использования конвертера OGNL? - PullRequest
0 голосов
/ 02 октября 2009

У меня есть класс, который выглядит так:

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 не поддерживают по умолчанию примитивное плавание?

Ответы [ 2 ]

0 голосов
/ 04 октября 2009

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

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

Очевидно, OGNL интерпретирует отрицательное число как строку. Я не уверен, как с этим справиться без конвертера. Приятно знать, что он будет обрабатывать положительные и исходные значения Float.

Я провел дальнейшие исследования по поводу этой ошибки. http://issues.apache.org/struts/browse/WW-2971

Он закрыт, но версия 2.1.8 отсутствует в Maven, и последняя версия Struts2 пока не использует его. (

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

0 голосов
/ 02 октября 2009

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

...