自定义嵌套标签实现IF ELSE

三个标签类:PowerIfTag是外边的,用来判断,PowerYesTag是里边的表示if(true)时,PowerNoTag是else]

 

 

PowerIfTag.java

    • package aa;
  1. import java.io.IOException;
  2. import javax.servlet.jsp.JspException;
  3. import javax.servlet.jsp.JspTagException;
  4. import javax.servlet.jsp.JspWriter;
  5. import javax.servlet.jsp.tagext.TagSupport;
  6. public class PowerIfTag extends TagSupport {
  7.     private String list;
  8.     private String name;
  9.     private boolean is;
  10.     
  11.     public boolean isIs() {
  12.         return is;
  13.     }
  14.     public void setIs(boolean is) {
  15.         this.is = is;
  16.     }
  17.     public String getList() {
  18.         return list;
  19.     }
  20.     public void setList(String list) {
  21.         this.list = list;
  22.     }
  23.     public String getName() {
  24.         return name;
  25.     }
  26.     public void setName(String name) {
  27.         this.name = name;
  28.     }
  29.     public int doStartTag() throws JspException {    
  30.         if(name!=null && !name.equals("") && list!=null && !list.equals(""))
  31.         {
  32.             //以下关键代码,大家可以根据自己的需求来改变.
  33.             Object o = this.pageContext.getSession().getAttribute(name);
  34.             if(o instanceof String)
  35.             {
  36.                 String aStr[]=list.split(",");
  37.                 String oStr = (String)o;
  38.                 for(int i=0;i<aStr.length;i++)
  39.                 {
  40.                     if(!aStr[i].equals("") && oStr.indexOf(aStr[i])>-1)
  41.                     {
  42.                         this.is = true;
  43.                         break;
  44.                     }
  45.                 }
  46.             }
  47.         }else
  48.         {
  49.             this.is = false;
  50.         }
  51.         return this.EVAL_PAGE;
  52.     }
  53. }

 

PowerYesTag.java

  1. package aa;
  2. import java.io.IOException;
  3. import javax.servlet.jsp.JspException;
  4. import javax.servlet.jsp.JspTagException;
  5. import javax.servlet.jsp.JspWriter;
  6. import javax.servlet.jsp.tagext.Tag;
  7. import javax.servlet.jsp.tagext.TagSupport;
  8. public class PowerYesTag extends TagSupport {
  9.     public int doStartTag() throws JspException {    
  10.         Tag t = findAncestorWithClass(this, PowerIfTag.class);   
  11.         if(t!=null)
  12.         {
  13.             PowerIfTag parent = (PowerIfTag) t;
  14.             if(parent.isIs())
  15.             {
  16.                 return EVAL_PAGE;
  17.             }
  18.         }
  19.         return SKIP_BODY;
  20.     }
  21. }

PowerNoTag.java

  1. package aa;
  2. import java.io.IOException;
  3. import javax.servlet.jsp.JspException;
  4. import javax.servlet.jsp.JspTagException;
  5. import javax.servlet.jsp.JspWriter;
  6. import javax.servlet.jsp.tagext.Tag;
  7. import javax.servlet.jsp.tagext.TagSupport;
  8. public class PowerNoTag extends TagSupport {
  9.     
  10.     public int doStartTag() throws JspException {    
  11.         Tag t = findAncestorWithClass(this, PowerIfTag.class);   
  12.         if(t!=null)
  13.         {
  14.             PowerIfTag parent = (PowerIfTag) t;
  15.             if(!parent.isIs())
  16.             {
  17.                 return EVAL_PAGE;
  18.             }
  19.         }
  20.         return SKIP_BODY;
  21.     }
  22. }

powerif.tld

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <taglib>
  3. <tlib-version>1.0</tlib-version>
  4. <jsp-version>1.2</jsp-version>
  5. <tag>
  6.   <name>pif</name>
  7.   <tag-class>aa.PowerIfTag</tag-class>
  8.   <attribute>
  9.     <name>list</name>
  10.     <required>true</required>
  11.     <rtexprvalue>true</rtexprvalue>
  12.   </attribute>
  13.   <attribute>
  14.     <name>name</name>
  15.     <required>true</required>
  16.     <rtexprvalue>true</rtexprvalue>
  17.   </attribute>
  18. </tag>
  19. <tag>
  20.   <name>pyes</name>
  21.   <tag-class>aa.PowerYesTag</tag-class>
  22. </tag>
  23. <tag>
  24.   <name>pno</name>
  25.   <tag-class>aa.PowerNoTag</tag-class>
  26. </tag>
  27. </taglib>

使用例子:

<td>
         <powerif:pif name="functStr" list="01010102">
          <powerif:pyes>
          <a href="/company.do?method=preUpdate&companyCode=${company.companyCode}" οnclick="alink(this);">${company.companyCode}</a>
          </powerif:pyes>
          <powerif:pno>
          ${company.companyCode}
          </powerif:pno>
         </powerif:pif>
        </td>

 

为何要自定义标签,就是因为有些别人写的标签不一定会合适自己的需要.像我所写的是关于权限的判断.大家用的时候要注意灵活点.

修改PowerIfTag中的业务代码就可以根据需求来灵活变换,我现在是判断权限,大家也可以根据自己的项目需求来改变.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值