%{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