java web 自定義標籤

自定義標籤包括:空標籤、帶屬性的標籤、帶標籤體的標籤、嵌套標籤

製作自定義標籤的步驟:

第一步、實現SimpleTag接口或者繼承SimpleTagSupport類


實現SimpleTag代碼

public class HelloTag implements SimpleTag {
/**
 * 執行標籤
 */
@Override
public void doTag() throws JspException, IOException {
}
@Override
public JspTag getParent() {
return null;
}
/**
 * 如果有標籤體,執行此代碼
 */
@Override
public void setJspBody(JspFragment jspFragment) {
}
/**
 * 標籤初始化 PageContext
 */
@Override
public void setJspContext(JspContext jspContext) {
}
/**
 * 設置父標籤
 */
@Override
public void setParent(JspTag jspTag) {
}
}

tld文件內容

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>h</short-name>
<uri>http://www.hdz.com/core</uri>
<tag>
<name>choose</name>
<tag-class>com.hdz.tag.ChooseTag</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<name>when</name>
<tag-class>com.hdz.tag.WhenTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<name>other</name>
<tag-class>com.hdz.tag.OtherTag</tag-class>
<body-content>scriptless</body-content>
</tag>
<function>
<name>connact</name>
<function-class>com.hdz.tag.MyFunction</function-class>
<function-signature>java.lang.String connact(java.lang.String)</function-signature>
</function>
</taglib>

繼承SimpleTagSupport類

public class HelloSonTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
super.doTag();
}
}

顯示標籤體內容

JspFragment jspFragment = getJspBody();
jspFragment.invoke(null);//參數爲空,輸出到網頁

StringWriter stringWriter = new StringWriter()
JspFragment jspFragment = getJspBody();
jspFragment.invoke(stringWriter );//輸出到控制檯

主要對象

public void setJspContext(JspContext jspContext) {
    PageContext pageContext = jspContext;//初始化PageContext
}


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