【发布时间】:2013-02-27 00:05:36
【问题描述】:
在 JSP 页面中使用 JSF 标记时是否运行 JSP 生命周期方法?如果有,顺序是什么?
使用 facelets 时 JSP 生命周期方法是否运行?
【问题讨论】:
标签: jsp jsf jakarta-ee facelets
在 JSP 页面中使用 JSF 标记时是否运行 JSP 生命周期方法?如果有,顺序是什么?
使用 facelets 时 JSP 生命周期方法是否运行?
【问题讨论】:
标签: jsp jsf jakarta-ee facelets
有一篇关于in IBM's DeveloperWorks 主题的非常清晰的文章。关于在 JSF 应用程序中使用 JSP 的主题,它说如下:
JSP 的主体相当于 servlet 的 doGet() 和 doPost() 方法(也就是说,它变成了 jspService() 方法)。这 JSF 自定义标签(例如 f:view 和 h:form)只是对 JSF 的调用 组件以使其自身处于当前状态。生命周期 JSF 组件模型的生命周期独立于 JSP 生成的 servlet。
所以,第一个问题的答案是肯定的; JSP 页面遵循自己的生命周期,而 JSF 组件遵循自己的生命周期。在 Facelets 上,您还可以找到:
与 JSP 不同,Facelets 是一种从头开始构建的模板语言 考虑到 JSF 组件生命周期。使用 Facelets,您可以生产 构建组件树而不是 servlet 的模板。
这样,如果您已经在使用 Facelets,则无需将 JSP 与 JSF 一起使用。所以第二个问题的答案是否定的,因为根本没有 JSP 页面。
【讨论】:
将 JSF 与 Facelets 结合使用时,JSP 生命周期方法(无论是什么)不会运行,原因很简单,Facelets 与 JSP 100% 分离。
顺便说一句,您应该永远不要将 JSF 与 JSP 一起使用。它是 JSF 的已弃用 VDL,不支持最新的 JSF 功能,而且是错误的。
【讨论】: