在struts标记中划分时获取数字的ceil值

时间:2014-04-09 06:36:40

标签: java jsp math struts2 ceil

我使用struts迭代器来显示我的数组列表我必须在迭代器标记的end属性中添加一个条件。两个整数划分时如何获得CEIL值。如果数组列表大小为3,那么我需要将结果属性

输出为2
<s:iterator var="counter" begin="0" end="arraylist.size()/2 " >
   /*my code...*/
</s:iterator> 

3 个答案:

答案 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方法的返回类型为intend的{​​{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