我刚刚在我的代码中引入了一个错误,因为我似乎误解了jsp标签的生命周期. 标签在错误之前就像这样工作: 我将一些集合的标签作为属性传递,并将其显示为表格.该集合从控制器传入
标签在错误之前就像这样工作:
我将一些集合的标签作为属性传递,并将其显示为表格.该集合从控制器传入JSP.
之后的bug:
我删除了设置集合的属性.相反,在标签中,我检查该集合是否为空,然后通过请求的名称(使用命名约定)来抓取它.
我没想到的事情:
在收集最初设置在标签中之后,后续执行将永远不会变为null!它仍然被定义为TLD中的不需要的属性.
我希望标签不会在执行之间保持先前的值.
你自己回答了这个问题 – 它是汇集的.请参阅 tag tutorial在Java实现中实现的内容,以及从那里链接的页面,其中包含 invocation sequence:ATag t = new ATag(); t.setPageContext(...); t.setParent(...); t.setAttribute1(value1); t.setAttribute2(value2); t.doStartTag(); t.doEndTag(); t.release();
也就是说,按照API的要求,在doEndTag()中重新初始化标签实例. (由Julien Kronegg发表评论,谢谢)
请注意,pooling可能是依赖于容器的,但是很合法(并且由于API设置,可能无处不在).