自定义标签(实例)
1、 自定义if…..else文件
a) Jsp代码:(主体)
<body>
<csdn:choose>
<csdn:when test="${user==null}">aaa</csdn:when>
<csdn:otherwise>bbbb</csdn:otherwise>
</csdn:choose>
</body>
</html>
b) ChooseTag.java (为子标签处理类提供访问text属性值的方法)
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class ChooseTag extends SimpleTagSupport {
private boolean flag=false;
public boolean isFlag() {return flag;}
public void setFlag(boolean flag) {this.flag = flag;}
public void doTag() throws JspException, IOException {
JspFragment jf=this.getJspBody();
jf.invoke(null);} }
c) WhenTag.java(获取父标签对应的处理类实例,调用父类的isFlag()方法,根据其返回值判断是否执行标签的主体)
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class WhenTag extends SimpleTagSupport {
private boolean test;
public void setTest(boolean test) {this.test = test;}
public void doTag() throws JspException, IOException {
//获取父标签对象
ChooseTag parent=(ChooseTag)this.getParent();
if(test&&!parent.isFlag()){
//处理该标签
this.getJspBody().invoke(null);
parent.setFlag(true);}}}
d) OtherwiseTag.java
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class OtherwiseTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
ChooseTag parent=(ChooseTag)this.getParent();
if(!parent.isFlag()){
this.getJspBody().invoke(null);
parent.setFlag(true);}}}