【问题标题】:c:forEach being rendered as text in faceletsc:forEach 在 facelets 中呈现为文本
【发布时间】:2012-02-22 17:57:46
【问题描述】:

在 facelets ui:composition 中渲染 jstl 标记时遇到问题

我当前的 xmlns 导入是:

xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"

当我部署它时,它会将文本呈现为

 <c:forEach> ... 

在 html 输出中。

我是否缺少依赖项?导入不正确?是否可以在 facelets 中使用 jstl 标签?

非常感谢!

【问题讨论】:

    标签: java jsf jstl facelets


    【解决方案1】:

    给定的 XML 命名空间(注意:不是“xmlns 导入”)对于 JSF 2.x 是正确的。但是,在将在 JSF 1.x 项目中独立使用的 Facelets 1.x 中,JSTL 的 XML 命名空间不同,它不应包含 /jsp 路径。

    xmlns:c="http://java.sun.com/jstl/core"
    

    但如果您实际上已经在使用 JSF 2.x(在未来的 JSF 2.x 问题中,请提及并相应地标记),那么您可能使用的是不包含 JSTL 的 servletcontainer,例如 Apache雄猫。您需要单独下载 JSTL 并将其放入 /WEB-INF/lib 文件夹中。在这种情况下,xmlns:c="http://java.sun.com/jsp/jstl/core" 应该可以工作。

    另见:


    与具体问题无关,在 Facelets 中使用 JSTL 绝对是可能的。您应该只确保您真正了解 JSF 中的 JSTL 等标记处理程序的生命周期。另请参阅 JSTL in JSF2 Facelets... makes sense? 您也可以使用 Facelets 自己的 &lt;ui:repeat&gt; 标签而不是 &lt;c:forEach&gt;

    【讨论】:

    • 我尝试了 ui:repeat 并且我相信我在信息传递到视图的方式上遇到了范围界定问题。由于 JSF 通常使用托管 bean 来绑定数据,并且我使用的是 Spring MVC 控制器,因此它无法正确呈现。我为混合技术感到羞耻=(
    • JSF 和 Spring MVC 确实不应该混合使用。对于 Spring MVC,您应该改用纯 HTML。但是命名空间问题呢?我的回答有帮助吗?您使用的是 JSF 1.x 还是 2.x?
    • 它是 JSF 1.x,仍然有问题,可能有很多不同的东西。可能只是尝试纯 JSF 方法,并使用 spring 控制器进行 ajax 调用以转储为纯 HTML。
    • 好的,修复答案中提到的 XML 命名空间是否有助于解决 &lt;c:forEach&gt; 未被解析的问题?对于其他问题,您可以随时提出问题。但总的来说,在一个 webapp 中混合不同的竞争 MVC 框架确实不明智。你必须做出选择。对于 JSF 中的 Ajax 功能,不如寻找一个真正的 JSF 组件库,比如 RichFaces,它为此提供了&lt;a4j:xxx&gt; 标签。
    • 是的,有点局限在我能用和不能用的范围内。命名空间更改不起作用,添加 jstl 作为依赖项也不起作用。我相信你的回答是正确的,但由于这个应用程序的组合方式,它不会很好地融合。需要制定一种解决方法。
    猜你喜欢
    • 2011-01-10
    • 2012-07-15
    • 2012-02-10
    • 2013-01-25
    • 2011-03-08
    • 2012-10-22
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多