我正在编写一段代码,如果语句正确,它应该显示一些html。
我有一个包含值的托管豆。状态是一个枚举 - 我在网上发现它可以被视为字符串。但是,它对我不起作用。
<c:if test="#{myBean.item.status == 'OPEN'}" >
//display this
</c:if>
显示此内容的最佳方式是什么?c:if
不起作用。
<c:if>
在视图构建时运行,即 XHTML 文件转换为 JSF 组件树的那一刻,如果待测试变量仅在视图呈现时(JSF 组件树需要生成 HTML 的那一刻(可用,则该将不起作用。然后,您将需要一个在视图呈现时运行的 JSF 组件。
如果您打算在视图呈现期间有条件地渲染 JSF 组件片段,则应使用 <ui:fragment>
<ui:fragment rendered="#{myBean.item.status == 'OPEN'}">
...
</ui:fragment>
另一种选择是<h:panelGroup>
:
<h:panelGroup rendered="#{myBean.item.status == 'OPEN'}">
...
</h:panelGroup>
只要您不指定任何应该在 HTML 输出中结束的属性,例如 id
、style
等,它也不会呈现任何 HTML 输出。然后,它将生成一个 HTML <span>
元素。这在语义上至少比其他回答者错误建议的<label>
要好得多。<label>
旨在标记关联的 HTML 输入元素,而不是跨越某些标记。
另请参阅:
- JSTL in JSF2 Facelets...意义?