自定义标签问题求解!
标签处理类文件代码:
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();语句)却能得到标签体内容,不知何故,请高手指点。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xiangcai626】截止到2008-07-04 15:01:41的历史汇总数据(不包括此帖):
    发帖的总数量:5                        发帖的总分数:120                      
    结贴的总数量:4                        结贴的总分数:80                       
    无满意结贴数:1                        无满意结贴分:40                       
    未结的帖子数:1                        未结的总分数:40                       
    结贴的百分比:80.00 %               结分的百分比:66.67 %                  
    无满意结贴率:25.00 %               无满意结分率:50.00 %                  
    楼主加油
      

  2.   

    bc为空了,你确定这个变量取到值了?
    如果有值得话
    换bc.toString();试下
      

  3.   

    bc肯定有值,加断点调试能看到里面得值,但是用toString()我已经试过了不行,得到是org.apache.jasper.runtime.BodyContentImpl@1049d3,