我正在编写一段代码,如果语句正确,该代码应该显示一些 html。
我有一个包含值的托管 bean。状态是一个枚举 - 我在网上发现它可以被视为一个字符串。但是,它对我不起作用。
<c:if test="#{myBean.item.status == 'OPEN'}" >
//display this
</c:if>
显示这个的最佳方式是什么?c:if
不起作用。
我正在编写一段代码,如果语句正确,该代码应该显示一些 html。
我有一个包含值的托管 bean。状态是一个枚举 - 我在网上发现它可以被视为一个字符串。但是,它对我不起作用。
<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>
其他回答者错误地建议的 a 好得多。A<label>
旨在标记关联的 HTML 输入元素,而不是跨越某些标记。