三个标签类:PowerIfTag是外边的,用来判断,PowerYesTag是里边的表示if(true)时,PowerNoTag是else]
PowerIfTag.java
-
- package aa;
- import java.io.IOException;
- import javax.servlet.jsp.JspException;
- import javax.servlet.jsp.JspTagException;
- import javax.servlet.jsp.JspWriter;
- import javax.servlet.jsp.tagext.TagSupport;
- public class PowerIfTag extends TagSupport {
- private String list;
- private String name;
- private boolean is;
- public boolean isIs() {
- return is;
- }
- public void setIs(boolean is) {
- this.is = is;
- }
- public String getList() {
- return list;
- }
- public void setList(String list) {
- this.list = list;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int doStartTag() throws JspException {
- if(name!=null && !name.equals("") && list!=null && !list.equals(""))
- {
- //以下关键代码,大家可以根据自己的需求来改变.
- Object o = this.pageContext.getSession().getAttribute(name);
- if(o instanceof String)
- {
- String aStr[]=list.split(",");
- String oStr = (String)o;
- for(int i=0;i<aStr.length;i++)
- {
- if(!aStr[i].equals("") && oStr.indexOf(aStr[i])>-1)
- {
- this.is = true;
- break;
- }
- }
- }
- }else
- {
- this.is = false;
- }
- return this.EVAL_PAGE;
- }
- }
PowerYesTag.java
- package aa;
- import java.io.IOException;
- import javax.servlet.jsp.JspException;
- import javax.servlet.jsp.JspTagException;
- import javax.servlet.jsp.JspWriter;
- import javax.servlet.jsp.tagext.Tag;
- import javax.servlet.jsp.tagext.TagSupport;
- public class PowerYesTag extends TagSupport {
- public int doStartTag() throws JspException {
- Tag t = findAncestorWithClass(this, PowerIfTag.class);
- if(t!=null)
- {
- PowerIfTag parent = (PowerIfTag) t;
- if(parent.isIs())
- {
- return EVAL_PAGE;
- }
- }
- return SKIP_BODY;
- }
- }
PowerNoTag.java
- package aa;
- import java.io.IOException;
- import javax.servlet.jsp.JspException;
- import javax.servlet.jsp.JspTagException;
- import javax.servlet.jsp.JspWriter;
- import javax.servlet.jsp.tagext.Tag;
- import javax.servlet.jsp.tagext.TagSupport;
- public class PowerNoTag extends TagSupport {
- public int doStartTag() throws JspException {
- Tag t = findAncestorWithClass(this, PowerIfTag.class);
- if(t!=null)
- {
- PowerIfTag parent = (PowerIfTag) t;
- if(!parent.isIs())
- {
- return EVAL_PAGE;
- }
- }
- return SKIP_BODY;
- }
- }
powerif.tld
- <?xml version="1.0" encoding="utf-8"?>
- <taglib>
- <tlib-version>1.0</tlib-version>
- <jsp-version>1.2</jsp-version>
- <tag>
- <name>pif</name>
- <tag-class>aa.PowerIfTag</tag-class>
- <attribute>
- <name>list</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
- <tag>
- <name>pyes</name>
- <tag-class>aa.PowerYesTag</tag-class>
- </tag>
- <tag>
- <name>pno</name>
- <tag-class>aa.PowerNoTag</tag-class>
- </tag>
- </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中的业务代码就可以根据需求来灵活变换,我现在是判断权限,大家也可以根据自己的项目需求来改变.