【问题标题】:How does JSF tags affect JSP lifecycle methods? What about JSP and facelets?JSF 标记如何影响 JSP 生命周期方法? JSP 和 facelets 呢?
【发布时间】:2013-02-27 00:05:36
【问题描述】:

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

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

【问题讨论】:

    标签: jsp jsf jakarta-ee facelets


    【解决方案1】:

    有一篇关于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 页面。

    【讨论】:

    • 当我们在 JSP 页面上使用 JSF 时,它们的生命周期是如何交织在一起的?
    • 如前所述,JSP 只是呈现 JSF 组件的当前状态,而 JSP 的生命周期非常简单(编译成页面类,页面类处理请求)。如果您在 JSF 中使用 Servlet,您只需实例化 JSF UI 组件并显示它们的状态:生命周期的复杂性来自 JSF,而不是来自 JSP/Servlets。
    【解决方案2】:

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

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

    【讨论】:

    • "is just wrong" 是回答寻求帮助的人的问题。您能否详细说明为什么将 JSP 与 JSF 一起使用是错误的以及缺少哪些功能(或指出 SO 或文章中的答案)?目前,-1。
    猜你喜欢
    • 2010-10-11
    • 1970-01-01
    • 2011-06-14
    • 2011-06-16
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多