%{control.current + #displayRows}
最终是我需要执行的语句。我将它放在 s:if 标记中,并使用 test 来查看该值是否在某个范围内。
最终,我得到字符串连接而不是加法,因为加法的两边都不被 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 中的地图。而键总是一个字符串......嗯......值并不总是一个整数,因为正在存储各种应用程序设置。所以我们可以为值类型做的最好的事情是对象。我相信这就是问题所在。OGNL 不认为这是可以自动转换为数字类型的东西。
我已经浏览了http://incubator.apache.org/ognl/language-guide.html上的语言指南,其中解释了其中一些概念,但我没有看到告诉 OGNL “是的,这个 displayRows 包含值15 真的是一个整数”。有没有办法做到这一点。我需要能够即时添加,因此我无法在 Javaland 中创建其他属性来帮助我。我查看了 OGNL、s:set 标记和 Java 级别,但我没有看到一个合适的地方可以实现这一点。