自定义标签问题求解!
标签处理类文件代码:
package example_1;import java.io.IOException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;public class Welcome extends BodyTagSupport {
public void setBodyContent(BodyContent bc) {
super.setBodyContent(bc);
System.out.println("BodyContent ='" + bc.getString() + "'"); } public int doAfterBody() {
try {
BodyContent bodyContent = super.getBodyContent();
String bodyString = bodyContent.getString(); JspWriter out = bodyContent.getEnclosingWriter();
out.print(bodyString.toUpperCase());
bodyContent.clear();
} catch (IOException e) {
System.out.println("BodyContentTag.doAfterBody() 中发生错误" +
e.getMessage());
e.printStackTrace();
}
return EVAL_PAGE;
}
}标签部署描述符文件代码如下:
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Simple Tags</short-name> <tag>
<name>simpletag</name>
<tag-class>example_1.Welcome</tag-class>
<body-content>jsp</body-content>
</tag>
</taglib>jsp页面如下:
<%@ taglib uri='WEB-INF/welcome.tld' prefix='w' %>
<%@ page contentType="text/html;charset=gb2312" %>
<!-- HellowWorld 必须与 *.tld 中的标签名称一致-->
<html>
<body>
<h1>
<w:simpletag>欢迎光临 Shop Stop</w:simpletag>
</h1>
</body>
</html>该程序红字部分(也就是标签处理程序中的setBodyContent方法的System.out.println("BodyContent ='" + bc.getString() + "'");语句)却无法得到标签体,控制台输出结果为BodyContent='';而蓝字部分(也就是doAfterBody方法中的String bodyString = bodyContent.getString();语句)却能得到标签体内容,不知何故,请高手指点。
标签处理类文件代码:
package example_1;import java.io.IOException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;public class Welcome extends BodyTagSupport {
public void setBodyContent(BodyContent bc) {
super.setBodyContent(bc);
System.out.println("BodyContent ='" + bc.getString() + "'"); } public int doAfterBody() {
try {
BodyContent bodyContent = super.getBodyContent();
String bodyString = bodyContent.getString(); JspWriter out = bodyContent.getEnclosingWriter();
out.print(bodyString.toUpperCase());
bodyContent.clear();
} catch (IOException e) {
System.out.println("BodyContentTag.doAfterBody() 中发生错误" +
e.getMessage());
e.printStackTrace();
}
return EVAL_PAGE;
}
}标签部署描述符文件代码如下:
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <!-- 标签库描述符 -->
<taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor">
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>Simple Tags</short-name> <tag>
<name>simpletag</name>
<tag-class>example_1.Welcome</tag-class>
<body-content>jsp</body-content>
</tag>
</taglib>jsp页面如下:
<%@ taglib uri='WEB-INF/welcome.tld' prefix='w' %>
<%@ page contentType="text/html;charset=gb2312" %>
<!-- HellowWorld 必须与 *.tld 中的标签名称一致-->
<html>
<body>
<h1>
<w:simpletag>欢迎光临 Shop Stop</w:simpletag>
</h1>
</body>
</html>该程序红字部分(也就是标签处理程序中的setBodyContent方法的System.out.println("BodyContent ='" + bc.getString() + "'");语句)却无法得到标签体,控制台输出结果为BodyContent='';而蓝字部分(也就是doAfterBody方法中的String bodyString = bodyContent.getString();语句)却能得到标签体内容,不知何故,请高手指点。
楼主【xiangcai626】截止到2008-07-04 15:01:41的历史汇总数据(不包括此帖):
发帖的总数量:5 发帖的总分数:120
结贴的总数量:4 结贴的总分数:80
无满意结贴数:1 无满意结贴分:40
未结的帖子数:1 未结的总分数:40
结贴的百分比:80.00 % 结分的百分比:66.67 %
无满意结贴率:25.00 % 无满意结分率:50.00 %
楼主加油
如果有值得话
换bc.toString();试下