2017-08-14 4 views
-1

私は2.3.23をストラットするストラット2.1からアプリをアップグレードしていますが、私は私は私のJSPに次のコードを持っている ...新しいバージョンの奇妙なエラーを持っている:Struts2 getTextは数値を返しますか?

<span id="n1"><s:text name="%{getText('prod_n1')}"/></span> 

そして、私の性質ではファイル:これは、出力 "-1.0" として私を与えるいくつかの理由から

prod_n1=N-1 

...

が、私は "N-1" "foo" ということで交換する場合は、その後、私の出力が "foo" というようです予想。 getTextメソッドが "N-1"を数値として参照しているようです。どのようにそれを修正するための任意のアイデア?

+0

」はi18n用です。 –

答えて

0

さらに多くの調査をした後、空白のページでこのバグを再現できます。<s:text/>タグ内でgetTextを呼び出すことによってのみ発生します。この構成では、入力文字列の先頭または末尾にスペースが含まれていない場合、出力は常に数値になります。プロパティファイルだけでなく、入力(セッション変数など)にも発生します。

私はStruts2コードを見ました。これは、入力をフロートとして考えるためのテキストを抽出する方法と考えています。

予想ように、単に「テキスト」タグの中に、このメソッドを使用しないようにしよう...

0

getText('prod_n1')の結果はN - 1を返します。

その結果が解析されOGNLとしてタグによって使用され、そして浮動値0を有するvalueStackにおけるキーNがある場合には-1.0に評価します。

このキーを使用して、プロパティファイルの値を検索します。このようなキー-1.0が見つからないため、キーが印刷されます。

関連する問題