%{control.current + #displayRows}
最終是我需要執行的聲明。我在s中使用它:如果標籤和我使用測試來查看這個值是否在一定範圍內。OGNL添加/類型強制
最終,我得到字符串連接而不是加法,因爲加法的兩邊都不被OGNL視爲數字類型。做一個小的修修補補,我看到
%{control.current + control.current}
不會導致數值除,所以確實這是在一個s設定displayRows值:設置標籤早些時候被認爲是一個非數字的值。這裏是我的s:set標籤:
<s:set name="displayRows" value="%{#application['app_settings'].settings['MAX ACCESS FIELD TITLES ROWS']}" />
這些設置表示Java中的Map。而關鍵始終是一個字符串...呃...值並不總是一個整數,因爲存儲了各種應用程序設置。所以我們可以爲值類型做的最好的是Object。我相信這是問題所在。 OGNL不認爲這是可以自動轉換爲數字類型的東西。
我已經通過http://incubator.apache.org/ognl/language-guide.html的語言指南解釋了其中的一些概念,但我沒有看到一種方法來告訴OGNL「是的,這個displayRows包含的值是15 REALLY是一個整數」。有沒有辦法做到這一點。我需要能夠實時添加,因此我無法在Javaland中創建其他屬性來幫助我。我已經看過OGNL,s:set標籤和Java級別,我沒有看到一個合適的位置來實現這一點。
我也在這裏看一些http://struts.apache.org/2.2.3/docs/type-conversion.html看看是否有任何適用於我的情況。讓我感到困惑的部分是Object類型的一些Map值應該被轉換,而另一些則不應該。 – demongolem 2011-06-15 17:21:25