关于taglib.tld文件的写法:
tld文件中需要一段文件头,如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
注意,Microsystems, Inc中Inc前面有一个空格,没这个空格,后台就会报错,说Invalid PUBLIC ID: -//Sun Microsystems,Inc.//DTD JSP Tag Library 1.1//EN。
其实就是少这个空格了,老外写英文时,喜欢在标点后空一格再写。(老外没有全角字,也就只好在标点后后格了,这样会比较好看)
关于自定义的taglib的开发:
1、自定义一个tag,并写出其.tld文件,比如:
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>mytablib</shortname>
<uri>/mytaglib</uri>
<tag>
<name>hello</name>
<tagclass>com.holen.test1.HelloTag</tagclass>
<bodycontent>empty</bodycontent>
<info>Just Says Hello</info>
</tag>
</taglib>
前四句为taglib的说是,每一个tag为一节,如hello。
2、然后为每个tag开发,也就是写class,比如:
package com.holen.test1;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
public class HelloTag extends TagSupport {
public HelloTag() {
}
public int doEndTag() throws JspException{
try{
pageContext.getOut().print("HolenChen");
}catch(Exception ex){
ex.printStackTrace();
}
return SKIP_BODY;
}
public void release(){
super.release();
}
}
其实就是重写doEndTag等方法。
3、在web.xml中加入,比如:
<taglib>
<taglib-uri>/mytaglib</taglib-uri>
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
4、调用
<%@ taglib uri="/mytaglib" prefix="mm" %>
<mm:hello/>
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=23174