0

次のようなクラスがあります。

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

次に、変数 foobar.value を渡した Web ページ (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)

コンバーターの作成について説明しているこの Web サイトを見つけましたhttp://www.opensymphony.com/ognl/html/DeveloperGuide/typeConversion.html

OGNL と Struts2 はデフォルトでプリミティブ float の設定をサポートしていませんか?

4

2 に答える 2

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 に答える
0

値を Float (オブジェクト) に変更すると、機能しますか?

于 2009-10-02T18:56:56.837 に答える