自定义标签在项目中非常有用,使用起来也非常简单,下面就看看创建及使用过程吧。
一、创建一个类并继承BodyTagSupport
package com.main.movie.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
/**
* 分页标签
* @author main
*
*/
@SuppressWarnings("serial")
public class UIPageTag extends BodyTagSupport {
private int page;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public int doStartTag() throws JspException {
StringBuffer html = new StringBuffer();
html.append("<a href='#' onclick='Tabs.changePage(\"admin/admin_adminManager?page=" + (page+1) + "\")'>下一页</a>");
try {
System.out.println(html.toString());
pageContext.getOut().print(html.toString());
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
}
二、在WEB-INF文件夹下创建一个tlds文件夹并创建tld文件(后缀是.tld,格式其实是xml的)
<?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>movie-admin</short-name>
<tag>
<name>uiPage</name>
<tag-class>com.main.movie.tag.UIPageTag</tag-class>
<attribute>
<name>page</name>
<required>true</required>
</attribute>
</tag>
</taglib>
三、配置web.xml
<jsp-config>
<taglib>
<taglib-uri>/movie-admin</taglib-uri>
<taglib-location>/WEB-INF/tlds/movie-admin.tld</taglib-location>
</taglib>
</jsp-config>
四、在JSP界面中引入标签
<%@ taglib uri="/WEB-INF/tlds/movie-admin.tld" prefix="family" %>
五、让标签支持EL表达式
修改需要支持EL表达式的属性的Setter方法如:
public void setValue(Object value)throws JspException {
this.value = ExpressionEvaluatorManager.evaluate(
"value", value.toString(), Object.class, this, pageContext);
}
属性说明:
第一个表示tag的名字,在取el表达式出错时使用。一般和属性名字相同。
第二个要求字符串,通常简单调用输入对象的toString方法。
第三个是类,通常用Object.class。
第四个用this即可,
第五个是pageContext变量。
注意:
1、tld文件中该标签属性的rtexprvalue得设置为true。
2、顺便检查一下JSTL所需的包在不在。