【问题标题】:Clarifying understanding of JSF 2.0阐明对 JSF 2.0 的理解
【发布时间】:2011-02-01 19:03:31
【问题描述】:

在深入研究 JSF 2.0 之前,我想通过寻找以下问题的答案来阐明我对 JSF 2.0 的理解:

  1. 参考实现MyFaces有什么区别?

  2. 可以在任何 servlet 上部署带有参考实现或 MyFaces 的 jsf 2.0 容器,即 tomcat/jetty,还是必须仅部署在符合 Java EE 的容器上?

  3. 创建自定义标签有多难?例如分页链接标签,类似于 Grails 中可用的标签?

  4. 是否可以将 *Faces(即 PrimeFaces、RichFaces 等)与 jquery 或 yui 之类的 javascript 库一起使用?这样做是否会产生任何冲突?

【问题讨论】:

    标签: java web-applications jsf-2


    【解决方案1】:

    1:参考实现和MyFaces有什么区别?

    它们由不同的团队开发。由于两者都应该遵守JSF 2.0 spec,因此应该在 JSF 2.0 规范中指定的基本功能方面没有区别。但是,对于暴露的和已修复的错误,可能存在差异。我个人的偏好是 Mojarra(参考实现)。

    2:带有参考实现或 MyFaces 的 jsf 2.0 是否可以部署在任何 servlet 容器(即 tomcat/jetty)上,还是只能部署在符合 Java EE 的容器上?

    是的。 JSF 2.0 只需要最低限度的 Servlet 2.5 API。所以任何 Servlet 2.5 兼容的容器甚至 Java EE 5 应用服务器都足够了。每当您想使用 JSF 2.0 时,您可能只需要禁用 Java EE 5 应用程序服务器中的内置 JSF 1.2 API。或者,更好的是,只使用 Java EE 6 应用程序服务器(Glassfish 3、JBoss AS 6 等),因为它已经附带 JSF 2.0。

    3:创建自定义标签有多难?例如分页链接标签,类似于 Grails 中可用的标签?

    当使用 Facelets 作为视图技术(在 JSF 2.0 中默认使用)时,使用模板或复合组件应该相对简单。由于它基本上只是 XML,因此不需要 Java 代码。

    4: 是否可以将 *Faces(即 PrimeFaces、RichFaces 等)与 jquery 或 yui 等 javascript 库一起使用?这样做是否会产生任何冲突?

    更重要的是,PrimeFaces 和 RichFaces 都带有内置的 jQuery (UI),PrimeFaces 也带有 YUI。这也是他们获得奇特外观和/或特殊效果的地方。至于和自己的jQuery脚本冲突,用jQuery.noConflict()压制就好了。


    当您准备好深入 JSF 2.0 时,我可以推荐以下教程:


    更新根据评论:

    但是,您能否详细说明为什么您的个人偏好是 Mojarra(参考实现)?

    因为我是 Mojarra 的狂热用户。没错,这是主观的:)

    客观地说,在 JSF RI 1.1 时代,MyFaces 是更好的选择。更少的错误和更好的性能。然而,由于新的 JSF RI 开发团队在 JSF RI 1.2 时期,改进/修复了很多。到目前为止,没有技术上的理由更喜欢其中一个。它是暴露和修复错误(维护/支持)的最高程度。

    相关问题:

    【讨论】:

    • 感谢您富有洞察力的回答;它们正是我想要的。但是,您能否详细说明为什么您的个人偏好是 Mojarra(参考实现)?谢谢。
    • 感谢您解释您对 Mojarra 的偏好。根据您的回答和链接,我现在可以轻松地使用 Mojarra 深入研究 JSF 2.0。但是,我确实有最后一个问题:除了使用PrettyFaces,还有其他方法可以在 JSF 2.0 中实现 restful/clean url(所有类型的请求,或者至少是 POST 和 GET)吗?
    • PrettyFaces 基本上没有第三方替代品。至少,没有人想到。但是,您可以在 FilterPhaseListener 的帮助下自行开发。但这需要深入了解 Servlet 和 JSF API。 PrettyFaces 非常好。
    • 虽然 RichFaces 附带 jQuery,但页面中并不总是包含 jQuery。如果我包含我自己的 jQuery,它会在 RichFaces 不包含其 jQuery 时工作,但如果我使用触发 jQuery 包含的 RichFaces 组件,它将中断/冲突。
    • @Hendy:在 JSF2 中,您可以使用 <h:outputScript> 来包含 RichFaces 自己的 jQuery。如果 RichFaces 组件反过来也需要包含它,它不会被包含两次。同样的故事也适用于 PrimeFaces 和其他 JSF2 组件库。
    猜你喜欢
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多