jsp自定義標籤switch、case、default ---尚未寫完

 定義switch

package tag;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

public class Switch extends TagSupport {
private boolean subtagsuccess;

public Switch(){
subtagsuccess=false;a
}

/*
* 當遇到switch標籤時,所有的子標籤都不執行。
* @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
*/
public int doStartTag()throws JspTagException{
subtagsuccess=false;
return EVAL_BODY_INCLUDE;
}

/*
* 該方法有子標籤調用,表示是否可以執行自身的標籤。
*/
public synchronized boolean getpermission(){

return (!subtagsuccess);
}

public synchronized boolean subtagsuccessed(){
return subtagsuccess=true;
}

/*
* 銷燬到該方法。
* @see javax.servlet.jsp.tagext.TagSupport#release()
*/
public void release(){
subtagsuccess=false;
}
}






定義case

package tag;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

public class Case extends TagSupport{
private boolean cond;

public Case(){
cond=false;
}
public void release(){
cond=false;
}

public void setCond(boolean cond){
this.cond=cond;
}

public int doStartTag()throws JspTagException{
Tag parse=getParent();
/*
* 判斷是否可以執行本身。
*/
if(!((Switch)parse).getpermission())
return SKIP_BODY;
/*
* 如果條件是真的,通知父類。表示已經有了一個符合條件的。
* 否則,忽略標籤體。
*/
if(cond){
((Switch)parse).subtagsuccessed();
return EVAL_BODY_INCLUDE;
}
else{
return SKIP_BODY;
}
}
}




定義default



package tag;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

public class Default extends TagSupport {
public void Default(){
}

public int doStartTag()throws JspTagException{

//return 0;
Tag defaultcase=getPareant();
if(!((Switch)defaultcase).getpermission())
return SKIP_BODY;

((Switch)defaultcase).subtagsuccessed();
return EVAL_BODY_INCLUDE;

}

}








tld文件



<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>swicth</short-name>
<display-name>simpley swicth</display-name>
<description>simple jsp tag3 </description>


<tag>
<name>swicth</name>
<tag-class>tag.Switch</tag-class>
<body-content>jsp</body-content>
<description>simple jsp tag 03</description>

</tag>


<tag>
<name>case</name>
<tag-class>tag.Case</tag-class>
<body-content>jsp</body-content>
<description>simple jsp tag 03</description>

<attribute>
<name>cond</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<!-- true表示可以用接受表達式;false:反之。 -->
</attribute>
</tag>


<tag>
<name>default</name>
<tag-class>tag.Default</tag-class>
<body-content>jsp</body-content>
<description>simple jsp tag 03</description>

</tag>
</taglib>








webx.xml文件



<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">



<jsp-config>
<taglib>
<taglib-uri>/jsptag3.tld</taglib-uri>
<taglib-location>/WEB-INF/jsptag3.tld</taglib-location>
</taglib>
</jsp-config>


<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章