Как мне установить значение float без использования конвертера OGNL?

StackOverflow https://stackoverflow.com/questions/1511221

Вопрос

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

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 (объект), сработает ли это?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top