0

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

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 默认不支持设置原始浮点数吗?

4

2 回答 2

0

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

于 2009-10-02T18:56:56.837 回答
0

好的,我想通了。上面的代码确实有效。但这不起作用。

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

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

我对此做了一些进一步的研究,发现了这个错误。http://issues.apache.org/struts/browse/WW-2971

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

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

于 2009-10-04T14:20:13.167 回答