<ui:repeat value="#{bean.allResults}" var="result">
<ui:fragment rendered="#{result.condition1}">
<ui:include src="/item1.xhtml">
</ui:fragment>
<ui:fragment rendered="#{result.condition2}">
<ui:include src="/item2.xhtml">
</ui:fragment>
<ui:fragment rendered="#{result.condition3}">
<ui:include src="/item3.xhtml">
</ui:fragment>
<ui:fragment rendered="#{result.condition4}">
<ui:include src="/item4.xhtml">
</ui:fragment>
</ui:repeat>
我有几个关于使用 JSF/JSTL/Facelets 时的最佳实践的问题。
我有一个 JSF 页面,看起来像上面的代码。假设此循环返回 10 个结果,并且对于每个结果,只有 1 个条件评估为真。因此,一旦加载,用户将在 html 页面上看到 10 个结果。
尽管只有 10 个项目会在 html 中显示,但组件树将包含 40 个项目,它会包含那些被渲染为 false 的项目。上述行为是否准确?
如果 1 为真,并且我们在组件树中可能有很多隐藏的组件,这是一个性能问题,假设它是 400 个项目而不是 40 个?
在 Faceletes 或 JSF 中是否有条件标记处理程序,其行为类似于 c:if 并且不会在树中包含组件?还是我应该使用 c:if 作为最后的手段?我试图避免使用 JSTL。
谢谢。