认识自定义标签http://www.cnblogs.com/realshijing/p/7890155.html
带属性的自定义标签:
带有属性的自定义标签,必须在自定义SimpleTag子类中为该属性设置Set方法。
①. 先在标签处理器类中定义 setter 方法. 建议把所有的属性类型都设置为 String 类型.
private String value; private String count; public void setValue(String value) { this.value = value; } public void setCount(String count) { this.count = count; }
②. 在 tld 描述文件中来描述属性:
<!-- 描述当前标签的属性 --> <attribute> <!-- 属性名 --> <name>value</name> <!-- 该属性是否必须 --> <required>true</required> <!-- rtexprvalue: runtime expression value 当前属性是否可以接受运行时表达式的动态值 --> <!--例如El表达式--> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>count</name> <required>false</required> <rtexprvalue>false</rtexprvalue> </attribute>
③. 在页面中使用属性, 属性名同 tld 文件中定义的名字.
<nchu:hello value="${param.name}" count="10"/>
④.标签处理器类对属性值进行处理
package yang.mybatis.tag; import javax.servlet.jsp.JspContext; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.JspFragment; import javax.servlet.jsp.tagext.JspTag; import java.io.IOException; /** * Created by yangshijing on 2017/11/24 0024. */ public class HelloSimpleTag implements javax.servlet.jsp.tagext.SimpleTag{ private PageContext pageContext; private String value; private String count; public void setCount(String count) { this.count = count; } public void setValue(String value) { this.value = value; } @Override public void doTag() throws JspException, IOException { pageContext.getOut().print("value :" + value + " count: " +count); } @Override public void setParent(JspTag jspTag) { System.out.println("setParent"); } @Override public JspTag getParent() { System.out.println("getParent"); return null; } @Override public void setJspContext(JspContext jspContext) { pageContext = (PageContext) jspContext; } @Override public void setJspBody(JspFragment jspFragment) { System.out.println("setJspBody"); } }
⑤.结果