我使用struts迭代器来显示我的数组列表我必须在迭代器标记的end
属性中添加一个条件。两个整数划分时如何获得CEIL值。如果数组列表大小为3,那么我需要将结果属性
<s:iterator var="counter" begin="0" end="arraylist.size()/2 " >
/*my code...*/
</s:iterator>
答案 0 :(得分:0)
在struts.xml中
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
现在可以调用静态方法;语法as described here将是:
@java.lan.Math@ceil()
然后
<s:iterator var = "counter"
begin = "0"
end = "%{@java.lang.Math@ceil(arraylist.size()/2)}" >
</s:iterator>
显然你需要在动作中有一个名为的属性(命名选择根本不好,如果它是真名)
private List<Object> arraylist;
显然是它的吸气剂(getArraylist()
)。
答案 1 :(得分:0)
当两个整数分开时,你得到一个有理数。因此,要删除小数部分,可以将其转换为int
。
int length = (int) arraylist.size()/2;
在迭代器中使用此结果。
答案 2 :(得分:0)
由于size
方法的返回类型为int
且end
的{{1}}属性最终会被投射到<s:iterator>
,因此您可以简单地添加Integer
在分割之前,将数组列表的大小与使用1
得到相同的结果。
Math.ceil
顺便说一句,如果您决定启用不推荐的<s:iterator var="counter" begin="0" end="(arraylist.size()+1)/2">
</s:iterator>
并在JSP中使用struts.ognl.allowStaticMethodAccess
方法,则需要指明您要除以双精度值(例如{{1} })或者在将其传递给Math.ceil
之前将其转换为2d
。
int