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

ISEESTARS 2007-04-21

在struts2及webwork中要实现如:

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

干脆把源码贴出来吧!

/*   
    
* $Id: Counter.java 471756 2006-11-06 15:01:43Z husted $   
    
*   
    
* Licensed to the Apache Software Foundation (ASF) under one   
    
* or more contributor license agreements.   See the NOTICE file   
    
* distributed with this work for additional information   
    
* regarding copyright ownership.   The ASF licenses this file   
    
* to you under the Apache License, Version 2.0 (the   
    
* "License"); you may not use this file except in compliance   
    
* with the License.   You may obtain a copy of the License at   
    
*   
    
*  http://www.apache.org/licenses/LICENSE-2.0   
    
*   
    
* Unless required by applicable law or agreed to in writing,   
    
* software distributed under the License is distributed on an   
    
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY   
    
* KIND, either express or implied.   See the License for the   
    
* specific language governing permissions and limitations   
    
* under the License.   
    
*/   
    
package org.apache.struts2.util;    
    
   
    
import java.io.Serializable;    
    
   
    
   
    
/**   
    
* A bean that can be used to keep track of a counter.   
    
* 
     
      
    
* 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:iterator>

</s:bean>

相关推荐

sunh / 0评论 2013-06-19