`
pure
  • 浏览: 354287 次
社区版块
存档分类
最新评论

struts2、webwork 循环的使用,实现for功能

阅读更多

在struts2及webwork中要实现如:

java 代码
  1. for(int i=0;i<10;i++){}  

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

jsp代码

<s:bean id="counter" name="org.apache.struts2.util.Counter"><s:iterator>
  1. <s:bean name="org.apache.struts2.util.Counter" id="counter">  
  2.    <s:param name="first" value="1" />  
  3.    <s:param name="last" value="10" />  
  4.    <s:iterator>  
  5.      counter:<s:property/>  
  6.    </s:iterator>  
  7. </s:bean>  

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

干脆把源码贴出来吧!

java 代码
  1. /*  
  2. * $Id: Counter.java 471756 2006-11-06 15:01:43Z husted $  
  3. *  
  4. * Licensed to the Apache Software Foundation (ASF) under one  
  5. * or more contributor license agreements.   See the NOTICE file  
  6. * distributed with this work for additional information  
  7. * regarding copyright ownership.   The ASF licenses this file  
  8. * to you under the Apache License, Version 2.0 (the  
  9. * "License"); you may not use this file except in compliance  
  10. * with the License.   You may obtain a copy of the License at  
  11. *  
  12. *  http://www.apache.org/licenses/LICENSE-2.0  
  13. *  
  14. * Unless required by applicable law or agreed to in writing,  
  15. * software distributed under the License is distributed on an  
  16. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  
  17. * KIND, either express or implied.   See the License for the  
  18. * specific language governing permissions and limitations  
  19. * under the License.  
  20. */  
  21. package org.apache.struts2.util;   
  22.   
  23. import java.io.Serializable;   
  24.   
  25.   
  26. /**  
  27. * A bean that can be used to keep track of a counter.  
  28.  

     
  29. * Since it is an Iterator it can be used by the iterator tag  
  30. *  
  31. */  
  32. public class Counter implements java.util.Iterator, Serializable {   
  33.   
  34.      private static final long serialVersionUID = 2796965884308060179L;   
  35.   
  36.      boolean wrap = false;   
  37.   
  38.      // Attributes ----------------------------------------------------   
  39.      long first = 1;   
  40.      long current = first;   
  41.      long interval = 1;   
  42.      long last = -1;   
  43.   
  44.   
  45.      public void setAdd(long addition) {   
  46.          current += addition;   
  47.      }   
  48.   
  49.      public void setCurrent(long current) {   
  50.          this.current = current;   
  51.      }   
  52.   
  53.      public long getCurrent() {   
  54.          return current;   
  55.      }   
  56.   
  57.      public void setFirst(long first) {   
  58.          this.first = first;   
  59.          current = first;   
  60.      }   
  61.   
  62.      public long getFirst() {   
  63.          return first;   
  64.      }   
  65.   
  66.      public void setInterval(long interval) {   
  67.          this.interval = interval;   
  68.      }   
  69.   
  70.      public long getInterval() {   
  71.          return interval;   
  72.      }   
  73.   
  74.      public void setLast(long last) {   
  75.          this.last = last;   
  76.      }   
  77.   
  78.      public long getLast() {   
  79.          return last;   
  80.      }   
  81.   
  82.      // Public --------------------------------------------------------   
  83.      public long getNext() {   
  84.          long next = current;   
  85.          current += interval;   
  86.   
  87.          if (wrap && (current > last)) {   
  88.              current -= ((1 + last) - first);   
  89.          }   
  90.   
  91.          return next;   
  92.      }   
  93.   
  94.      public long getPrevious() {   
  95.          current -= interval;   
  96.   
  97.          if (wrap && (current < first)) {   
  98.              current += (last - first + 1);   
  99.          }   
  100.   
  101.          return current;   
  102.      }   
  103.   
  104.      public void setWrap(boolean wrap) {   
  105.          this.wrap = wrap;   
  106.      }   
  107.   
  108.      public boolean isWrap() {   
  109.          return wrap;   
  110.      }   
  111.   
  112.      public boolean hasNext() {   
  113.          return ((last == -1) || wrap) ? true : (current <= last);   
  114.      }   
  115.   
  116.      public Object next() {   
  117.          return new Long(getNext());   
  118.      }   
  119.   
  120.      public void remove() {   
  121.          // Do nothing   
  122.      }   
  123. }   
  124.   
</s:iterator>
</s:bean>
分享到:
评论

相关推荐

    struts2 关于多文件上传的使用

    Struts2不仅继承了Struts1的优点,还吸收了WebWork等其他框架的优点,支持拦截器、类型转换、输入验证等特性,使开发者能够更加专注于业务逻辑的实现。 #### 二、多文件上传的基本原理 在Web应用中,文件上传通常...

    WebWork ww标签

    `&lt;ww:iterator&gt;`标签用于迭代集合中的元素,类似于Java中的for-each循环。它可以遍历一个集合,并为每次迭代提供当前元素和迭代状态信息。 ```html &lt;option value="&lt;ww:property value="id"/&gt;...

    java相关学习资料

    - **J2SE 5.0与6.0 API**:深入了解这两个版本中的新特性,包括泛型、增强for循环、枚举等。 - **网络编程**:掌握Socket编程,了解如何进行网络通信。 - **正则表达式**:Regular Expression在字符串处理中的应用。...

    freemarker总结

    2,使用+运算符时,如果一边是数字,一边是字符串,就会自动将数字转换为字符串再连接,如:${3 + "5"},结果是:35 使用内建的int函数可对数值取整,如: ${ (x/2)?int } ${ 1.1?int } ${ 1.999?int } ${ -1.1?int } ...

    java教程!!2008 20小时快速学习

    WebWork允许开发者更轻松地构建动态Web应用,通过Action、Struts-config.xml配置文件和JSP视图来实现业务逻辑和用户界面的分离。学员将了解如何配置WebWork,创建Action类,以及如何在JSP页面中显示数据。 总的来说...

    ongl源代码

    - **WebWork/Struts2**:ONGL是这两款MVC框架的默认表达式语言,用于处理动作和视图的绑定。 - **独立使用**:ONGL也可单独作为工具库,用于在任何Java程序中执行动态表达式。 通过研究jkuhnert-ognl-1483b9a的源...

    Freemarker开发指南

    - **实现**: 在 Freemarker 模板中使用 `&lt;#list&gt;` 或 `&lt;#foreach&gt;` 循环来生成表格行。 - 示例代码: ```html &lt;th&gt;ID &lt;th&gt;Name &lt;th&gt;Email ${user.id} ${user.name} ${user.email} `...

    Tapestry开发

    2. **自动表单处理:**Tapestry框架提供了自动表单处理功能,可以极大地减少编写重复代码的工作量。 3. **事件驱动模型:**采用事件驱动模型,使开发者能够更容易地管理用户交互和页面更新。 4. **动态页面渲染:**...

Global site tag (gtag.js) - Google Analytics