Struts 2 中<s:iterator>标签除法时如何获取数字的ceil值

问题描述 投票:0回答:3

我使用 Struts

<s:iterator>
标签来显示数组列表,我必须在
end
标签的
<s:iterator>
属性中放置一个条件。两个整数相除时如何得到 ceil 值。如果数组列表大小为 3,那么我需要将结束属性的输出设为 2。

<s:iterator var="counter" begin="0" end="arraylist.size()/2 " >
   /*my code...*/
</s:iterator> 
java jsp math struts2 ceil
3个回答
0
投票

因为

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>
    

0
投票
在struts.xml中

<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()

) .


0
投票
当两个整数相除时,你会得到一个有理数。因此,要去掉小数部分,您可以将其转换为

int

int length = (int) arraylist.size()/2;

在迭代器中使用这个结果。

© www.soinside.com 2019 - 2024. All rights reserved.