注意<c:forEach>的用法
2013-04-14 22:21
337 查看
<c:forEach>中判断的问题。
<c:forEach>属性var定义的是迭代参数的名称,然后begin定义从这个值开始迭代,然后在end结束。我以为这样循环就很好解决了,因为我做的是个分页,那肯定是有12345各个页面的。这样用<c:forEach>就可以解决了。但是如果我在加个条件,如果我在当前页,当前页上面会与其他页的状态不同,比如12345,我在1上,那么1比其他都大。这该怎么解决?难道用<s:if>,我用了它,最后出了问题。从Action传过来的当前页(page)根本就不能和属性var的值相比较。想了很多办法都不行,最后只能这样解决了:
在Action中for循环,最大值定义为总页数。array定义为ArrayList型的,然后array.add(...),这样就有了一个ArrayList型的数据,传给jsp就可以解决了。
自此我也总结出来了一个经验,一般不要用<c:forEach>,除非只用来显示,它的一大好处就是可用begin和end控制循环的地方。一般要用就用<s:iterator>,如果要循环数组,就在Action中将数组改为ArrayList型的。
另一个我容易弄混的一点,就是jsp中使用<s:iterator>,假设:<s:iterator value = "num" id = "data">,如果说要将data显示出来,就直接用${data}即可,而如果要使用data,就必须#data。
<c:forEach>属性var定义的是迭代参数的名称,然后begin定义从这个值开始迭代,然后在end结束。我以为这样循环就很好解决了,因为我做的是个分页,那肯定是有12345各个页面的。这样用<c:forEach>就可以解决了。但是如果我在加个条件,如果我在当前页,当前页上面会与其他页的状态不同,比如12345,我在1上,那么1比其他都大。这该怎么解决?难道用<s:if>,我用了它,最后出了问题。从Action传过来的当前页(page)根本就不能和属性var的值相比较。想了很多办法都不行,最后只能这样解决了:
在Action中for循环,最大值定义为总页数。array定义为ArrayList型的,然后array.add(...),这样就有了一个ArrayList型的数据,传给jsp就可以解决了。
自此我也总结出来了一个经验,一般不要用<c:forEach>,除非只用来显示,它的一大好处就是可用begin和end控制循环的地方。一般要用就用<s:iterator>,如果要循环数组,就在Action中将数组改为ArrayList型的。
另一个我容易弄混的一点,就是jsp中使用<s:iterator>,假设:<s:iterator value = "num" id = "data">,如果说要将data显示出来,就直接用${data}即可,而如果要使用data,就必须#data。
相关文章推荐
- jsp中<c:forEach>的用法
- jstl中<c:forEach>的用法
- <c:foreach>用法
- qtcpsocket qtcpserver,在用block写数据包的时候,注意">>"和"<<"用法
- JSTL标签用法:<c:choose><c:forEach><c:if><...
- honey----- jstl中<c:forEach>的用法【没有试验过里面的例子,仅供参考】
- struts2的<s:token/>用法及注意事项合集
- <c:foreach>用法
- <c:forEach>用法
- Jstl标签<c:forEach>的用法
- jstl中<c:forEach>的用法
- <c:forEach></c:forEach>嵌套的用法与for的区别
- <c:forEach> 用法
- jstl中<c:forEach>的用法
- <c:foreach>用法
- JSP 基础之 JSTL <c:forEach>用法
- <转>ASP.NET MVC HtmlHelper用法大全
- <%%>/<%#%>/<%=%>用法说明
- #include <queue> 库的用法~
- <c:if test="value ne, eq, lt, gt,...."> 用法