如何在不使用OGNL转换器的情况下设置浮动?

时间:2009-10-02 18:50:13

标签: java struts2 floating-point ognl

我有一个看起来像这样的课程:

public class Foobar {
   private float value;
   public void setValue(float value) {
      this.value = value;
   }
}

然后我有一个传递了变量foobar.value的网页(Struts2)。

<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 :(得分:0)

如果将值更改为Float(对象),那会起作用吗?

答案 1 :(得分:0)

好的,我明白了。以上代码可行。但这不起作用。

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

显然,OGNL将负数解释为字符串。我不知道如何在没有转换器的情况下解决这个问题。很高兴知道它将处理正浮动和本机浮动。

我做了一些关于发现这个bug的进一步研究。 http://issues.apache.org/struts/browse/WW-2971

它已关闭,但版本2.1.8不在Maven中,最新版本的Struts2尚未依赖它。 :(

我想我现在正在写一个转换器。