感悟:但是不建议使用这种方法,按照MVC框架的思想 ,应该把业务更多放在后台。前台尽量只进行数据展示。

转自:http://blog.csdn.net/guandajian/article/details/7334756

在struts2及webwork中要实现如:

 for(int i=0;i<10;i++){
//内容
}

还是需要一些技巧的,我在做分页条的时候,要输出页码,怪了,用迭代器不行的,看了一下struts2的文档及例子也没发现用计数器的地方,偶然看了一下bea标签,哦,原来如此....

 <s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" /> //起始值
<s:param name="last" value="10" /> //循环控制变量
<s:iterator>
counter:<s:property/> //内容
</s:iterator>
</s:bean>

其中first属性指定循环起始值,last指定循环终止值,其它相关属性可以查看org.apache.struts2.util.Counter类源码。在下面迭代器中输入循环的当前值,即:current

干脆把源码贴出来吧!

-----------------------------------------------------------------------------------------------------------------------------

 package org.apache.struts2.util;

 import java.io.Serializable;

 /**
* A bean that can be used to keep track of a counter.
* <p/>
* Since it is an Iterator it can be used by the iterator tag
*
*/
public class Counter implements java.util.Iterator, Serializable { private static final long serialVersionUID = 2796965884308060179L; boolean wrap = false; // Attributes ----------------------------------------------------
long first = 1;
long current = first;
long interval = 1;
long last = -1; public void setAdd(long addition) {
current += addition;
} public void setCurrent(long current) {
this.current = current;
} public long getCurrent() {
return current;
} public void setFirst(long first) {
this.first = first;
current = first;
} public long getFirst() {
return first;
} public void setInterval(long interval) {
this.interval = interval;
} public long getInterval() {
return interval;
} public void setLast(long last) {
this.last = last;
} public long getLast() {
return last;
} // Public --------------------------------------------------------
public long getNext() {
long next = current;
current += interval; if (wrap && (current > last)) {
current -= ((1 + last) - first);
} return next;
} public long getPrevious() {
current -= interval; if (wrap && (current < first)) {
current += (last - first + 1);
} return current;
} public void setWrap(boolean wrap) {
this.wrap = wrap;
} public boolean isWrap() {
return wrap;
} public boolean hasNext() {
return ((last == -1) || wrap) ? true : (current <= last);
} public Object next() {
return new Long(getNext());
} public void remove() {
// Do nothing   } }

//项目中的应用

<s:bean name="org.apache.struts2.util.Counter" id="counter">
<s:param name="first" value="1" />
<s:param name="last" value="#request.num" />
<s:iterator>
<tr bgcolor="ffffff" align="center">
<td>${rs.f_courseId}&nbsp;</td>
<td>${rs.f_coursename}&nbsp;</td>
<td>${rs.f_term}&nbsp;</td>
<td>${rs.f_week}&nbsp;</td>
<td>${rs.f_credit}&nbsp;</td>
<td>${rs.f_courseStart}&nbsp;</td>
<td>${rs.f_courseEnd}&nbsp;</td>
<td><a href="">查看</a> <a href="">删除</a></td>
</tr>
</s:iterator>
</s:bean>

Struts2标签实现for循环的更多相关文章

  1. Struts2标签简介

    Struts2标签简介 Struts2标签的优势 标签库简化了用户对标签的使用 结合OGNL使用,对于集合.对象的访问功能非常强大 提供可扩展的主题.模板支持,极大简化了视图页面的编写 不依赖任何表现 ...

  2. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...

  3. struts2标签整理

    在JSP2.1中#被用作了JSP EL(表达式语言)的特殊记好,所以对OGNL的使用可能导致问题,   一个简单的方法是禁用JSP2.1的EL特性,这需要修改web.xml文件:   Java代码   ...

  4. struts2标签详解

    struts2标签讲解 要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可:<%@ taglib prefix="s" uri="/struts-t ...

  5. struts2标签学习笔记(一)

    struts2所有标签都定义在一个s标签库里.虽然struts2把所有的标签都定义在URI为"/struts-tags"空间下,但依然可以对struts2标签进行简单的分类. 1. ...

  6. Struts2 标签库详解2

    Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, ...

  7. Struts2 标签库详解

    Struts2标签库 包括: OGNL Struts2标签分类 控制标签 :(if, elseif,else, iterator, append, merge, generator, subset, ...

  8. struts2标签使用详解

    Struts2常用标签总结一 介绍1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了更好的代码 ...

  9. struts2标签(转)

    Struts2 标签库讲解   要使用Struts2的标签,只需要在JSP页面添加如下一行定义即可: <%@ taglib prefix="s" uri="/str ...

随机推荐

  1. dll劫持技术

    DLL劫持技术当一个可执行文件运行时,Windows加载器将可执行模块映射到进程的地址空间中,加载器分析可执行模块的输入表,并设法找出任何需要的DLL,并将它们映射到进程的地址空间中. DLL劫持原理 ...

  2. AppCompat学习(1)-AppCompatSpinner

    andriod中的spinner控件一共有两个,一个是本身的Spinner,一个是android.support.v7.widget.AppCompatSpinner. 两者的区别在于v7内的Spin ...

  3. sturct stat 结构体中 st_mode 的含义

    工作中遇到 else if( (s_buf.st_mode&S_IFMT) == S_IFDIR) return 2; else if( !(s_buf.st_mode&S_IFREG ...

  4. POJ2823 Sliding Window (单调队列)

    POJ2823 Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 38342   Accepte ...

  5. Python调用C/Fortran混合的动态链接库-下篇

    接着前面的内容,我们在这里继续介绍Python传递二维数组到fortran并进行简单计算后返回的例子. 问题描述: module py2f90 use,intrinsic::iso_c_binding ...

  6. 获取并设置ListView高度的方法

    01 public void setListViewHeightBasedOnChildren(ListView listView) {  02     ListAdapter listAdapter ...

  7. 教程Xcode 4下编译发布与提交App到AppStore

    地址:http://www.cocoachina.com/bbs/simple/?t55825.html 教程Xcode 4下编译发布与提交App到AppStore 先说一下这个是我在网上看到的一个帖 ...

  8. 黑客讲述渗透Hacking Team全过程(详细解说)

    近期,黑客Phineas Fisher在pastebin.com上讲述了入侵Hacking Team的过程,以下为其讲述的原文情况,文中附带有相关文档.工具及网站的链接,请在安全环境下进行打开,并合理 ...

  9. HDU 1864最大报销额 01背包问题

    B - 最大报销额 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  10. HDU3345广搜 (P,E,T,#)

    War chess is hh's favorite game:In this game, there is an N * M battle map, and every player has his ...