JSP 标签生命周期

标签 jsp jsp-tags lifecycle

我刚刚在我的代码中引入了一个错误,因为我似乎误解了 jsp 标记生命周期。

该标签在出现错误之前是这样工作的:
我将某个集合作为属性传递给标记,并将其显示为表格。集合从 Controller 传递到 JSP。

错误后:
我删除了设置集合的属性。相反,在标签中我检查集合是否为空,然后从请求中按名称获取它(使用命名约定)。

没想到的是:
在最初在标签中设置集合后,它在后续执行中永远不会变为空!它仍然被定义为 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 发表评论时已更改,谢谢)

请注意,池化可能依赖于容器,但非常合法(并且,由于 API 设置,可能在任何地方都进行了)。

关于JSP 标签生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/616064/

相关文章:

java - 如何将Oracle9i与JAVA或JSP集成?

java - 我的 Servlet、Bean 和 JSP 之间的通信问题

android - 如何检查一个 Activity 是否是应用程序 Activity 堆栈中的最后一个 Activity ?

javascript - JSP中如何将多个脚本合并为一个脚本?

java - 使用 jQuery 将参数发送到 Java Server Pages (JSP)

jsp - 评估请求属性中的 EL 表达式

java - 在 Java 构建路径上找不到父类(super class) "javax.servlet.http.HttpServlet"

java - 如何从jsp文件中调用java文件中带参数的函数?

c# - 在启动时设置线程生命周期

asp.net - 为什么 ASP.NET 动态控件即使添加到 Page_Load 中也能保持 ViewState?