我使用 Struts
<s:iterator>
标签来显示数组列表,我必须在 end
标签的 <s:iterator>
属性中放置一个条件。两个整数相除时如何得到 ceil 值。如果数组列表大小为 3,那么我需要将结束属性的输出设为 2。
<s:iterator var="counter" begin="0" end="arraylist.size()/2 " >
/*my code...*/
</s:iterator>
因为
size
方法返回类型是 int
并且 end
的 <s:iterator>
属性最终将被转换为 Integer
你可以简单地将 1
添加到数组列表的大小,然后再划分它,你会得到相同的结果使用 Math.ceil
的结果。
<s:iterator var="counter" begin="0" end="(arraylist.size()+1)/2">
</s:iterator>
顺便说一句,如果您决定启用
struts.ognl.allowStaticMethodAccess
(不推荐)并在 JSP 中使用 Math.ceil
方法,则需要指示您除以双精度值(例如
2d
),否则它将转换为
int
在将其传递给
ceil
之前。
<s:iterator var = "counter" begin = "0"
end = "@java.lang.Math@ceil(arraylist.size()/2d)">
</s:iterator>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
现在可以调用静态方法了;语法,
如此处所述,将是:
@java.lan.Math@ceil()
然后
<s:iterator var = "counter"
begin = "0"
end = "%{@java.lang.Math@ceil(arraylist.size()/2)}" >
</s:iterator>
显然你需要在操作中一个这样命名的属性(如果是真实姓名,命名选择根本不好)
private List<Object> arraylist;
显然有它的 getter (
getArraylist()
) .
int
。
int length = (int) arraylist.size()/2;
在迭代器中使用这个结果。