日期:2014-05-16  浏览次数:20413 次

jsp简单自定义标签的forEach遍历及转义字符

接着昨天的,如果<forEach>中的items类型是map或者Collection类型的,怎样使用增强for循环;

首先还是创建一个标签处理器类,定义两个属性,String var; Object items

因为items要迭代各种集合,所以要使用Object;

然后重写setter方法;

声明一个成员变量,集合类型的, 和上面两个属性是不相同的,这个是用在类里的,

itemssetter方法中,判断items的类型

然后继承他的doTag方法;

public class ForEachTag2 extends SimpleTagSupport {

 

private String var;

private Object items;

private Collection collection;

      public void setVar(String var){

       this.var=var;

      }

      public void setItems(Object items){

       this.items=items;

       

       if(items instanceof Map){

       Map map  = (Map) items;

       collection = map.entrySet();

       }

       if(items instanceof Collection){//set list

       collection =(Collection) items;

       

       }

       if(items.getClass().isArray()){

       collection = new ArrayList();

       int len = Array.getLength(items);

       for(int i=0;i<len;i++){

       Object obj= Array.get(items, i);

       collection.add(obj);

       }

       

       }

       

      }

@Override

public void doTag() throws JspException, IOException {

       Iterator iterator = collection.iterator();

       while(iterator.hasNext()){

        

       Object obj = iterator.next();

       this.getJspContext().setAttribute(var, obj);

       this.getJspBody().invoke(null);

       }

&n