【问题标题】:Integrating JSTL With Facelets将 JSTL 与 Facelets 集成
【发布时间】:2011-02-08 07:46:04
【问题描述】:

我正在考虑在同一个 Web 项目中使用 Facelets 和 JSTL。

整合这些有什么问题吗?

【问题讨论】:

    标签: jsf jstl facelets


    【解决方案1】:

    Facelets 克隆了一组有限的“旧”JSTL 标记,并包含在 Facelets 库中。它们都被描述为here。换句话说:Facelets 并不支持所有的 JSTL 标签/函数。

    如果您想使用任何原始 JSTL 标记,但 Facelets 没有提供,那么您将前往另一个角落寻求解决方案。 JSTL sqlxml 标签库可以完成的工作不属于视图,而是属于模型/业务逻辑。 JSTL fmt 标签库已经被 JSF 的 <f:loadBundle><f:formatXXX> 标签覆盖。 JSTL functions taglib 可以与自定义 EL 函数一样好。我在this answer 中发布了一个示例。

    JSF 和原始 JSTL 库的问题在于它们不能像您对编码所期望的那样同步运行。更重要的是,JSTL 先从上到下运行页面,然后将生成的输出交给 JSF 进行进一步处理。例如使用<c:forEach> 时,这可能会导致意外结果。

    另见:

    【讨论】:

    • 抱歉评论了一个很老的帖子。但是,您提供的链接 - facelets.dev.java.net/nonav/docs/dev/… 不起作用。能否提供最新的网址?
    • @Vikas:所有过时的链接都已修复。
    【解决方案2】:

    正如 Facelets 文档 here 中所述,JSTL 可以集成到 Facelets 应用程序中。但是,如果可能,必须避免使用 JSTL 库的某些组件,例如 <c:set>

    请注意,Facelets 还提供了一些 JSTL 标记的替换。因此,您可以将<c:forEach> 替换为<ui:repeat> 标记(阅读更多关于这两个组件的here)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-02
      • 2016-11-24
      • 2012-07-15
      相关资源
      最近更新 更多