代码之家  ›  专栏  ›  技术社区  ›  Trevor Allred

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

  •  0
  • Trevor Allred  · 技术社区  · 15 年前

    我有一门课看起来像这样:

    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 回复  |  直到 12 年前
        1
  •  0
  •   Nate    15 年前

    如果您将值更改为float(对象),这是否有效?

        2
  •  0
  •   Trevor Allred    15 年前

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

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

    显然,ognl将负数解释为一个字符串。我不知道如果没有转换器怎么处理这个问题。很高兴知道它将处理正浮点和本机浮点。

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

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

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