自定义标签包括:空标签、带属性的标签、带标签体的标签、嵌套标签
制作自定义标签的步骤:
第一步、实现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 }
本文出自 “11137669” 博客,请务必保留此出处http://11147669.blog.51cto.com/11137669/1906508
原文:http://11147669.blog.51cto.com/11137669/1906508