日期:2014-05-18  浏览次数:20825 次

JSP用BodyTagSupport做自定义标签的奇怪问题????
public   class   Mytag   extends   BodyTagSupport   {
   
private   int   count   =   5;

    public   int   doStartTag()   throws   JspTagException   {
    System.out.print(count);
        return   EVAL_BODY_BUFFERED;
    }
   
    /*   (non-Javadoc)
  *   @see   javax.servlet.jsp.tagext.BodyTagSupport#doAfterBody()
  */
public   int   doAfterBody()   throws   JspException   {
//   TODO   Auto-generated   method   stub

if(count   > 1)
{
System.out.print( "test ");
count--;
return   EVAL_BODY_AGAIN;
}
else
{
return   SKIP_BODY;
}


}

public   int   doEndTag()   throws   JspTagException   {
        return   EVAL_PAGE;
    }
}
第一次访问调用这个标签的JSP页,可以循环输出4个   "test "   count的初值为5

可是刷新后发现...count的值还是从1开始.控制台无 "test "输出..为什么刷新后count没有重新实例化????

------解决方案--------------------
你说对了,就是没有重新实例化,你要把count的值在doStartTag()中重新设置
------解决方案--------------------
帮你顶!!!
我也遇到了同样的问题,发现TabLib对象的生命周期是application级别的,如何让它变成page级别呢?