自定義標籤(實例)
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);}}}