天天看点

struts2 标签 for循环的实现

Java代码 <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 value="current-1" />    

  </s:iterator>    

</s:bean>    

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

Counter类源码   

package  org.apache.struts2.util;  

import  java.io.Serializable;  

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   

    }