2

在 JSP 页面中使用 JSF 标记时是否运行 JSP 生命周期方法?如果有,顺序是什么?

使用 facelets 时 JSP 生命周期方法是否运行?

4

2 回答 2

4

IBM 的 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 页面。

于 2013-03-11T18:56:47.303 回答
2

JSP 生命周期方法(无论是什么)在将 JSF 与 Facelets 一起使用时不会运行,原因很简单,Facelets 与 JSP 100% 分离。

顺便说一句,您应该永远不要将 JSF 与 JSP 一起使用。它是 JSF 的已弃用 VDL,不支持最新的 JSF 功能,而且是错误的。

于 2013-03-11T18:44:28.997 回答