将JSTL与Facelets集成

时间:2010-04-15 10:29:38

标签: jsf jstl facelets

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

在整合这些方面有什么问题吗?

2 个答案:

答案 0 :(得分:10)

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

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

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

另见:

答案 1 :(得分:3)

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

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