%{control.current + #displayRows}
最終的に実行する必要があるステートメントです。私はそれを s:if タグに入れ、テストを使用して、この値が特定の範囲内にあるかどうかを確認します。
最終的に、OGNL では加算の両側が数値型と見なされないため、加算ではなく文字列の連結が得られます。ちょっといじってみるとわかる
%{control.current + control.current}
は数値加算になるため、以前に s:set タグで設定された displayRows 値は数値以外の値と見なされます。ここに私の s:set タグがあります:
<s:set name="displayRows" value="%{#application['app_settings'].settings['MAX ACCESS FIELD TITLES ROWS']}" />
設定は Java のマップを表します。キーは常に文字列ですが、さまざまなアプリケーション設定が保存されているため、値は必ずしも整数ではありません。したがって、値の型に対してできる最善の方法は Object です。そして、これが問題だと思います。OGNL は、これを自動的に数値型に変換できるものとは見なしません。
これらの概念のいくつかを説明しているhttp://incubator.apache.org/ognl/language-guide.htmlの言語ガイドを調べましたが、OGNLに「はい、値を含むこのdisplayRows」を伝える方法がわかりませんof 15 REALLY は整数です。」これを実現する方法はありますか。その場で追加できるようにする必要があるため、Javaland で追加の属性を作成して支援することはできません。OGNL、s:set タグ、および Java レベルを見てきましたが、これを実現できる適切な場所がわかりません。