0

我正在编写一段代码,如果语句正确,该代码应该显示一些 html。

我有一个包含值的托管 bean。状态是一个枚举 - 我在网上发现它可以被视为一个字符串。但是,它对我不起作用。

  <c:if test="#{myBean.item.status == 'OPEN'}" >
         //display this
   </c:if> 

显示这个的最佳方式是什么?c:if不起作用。

4

1 回答 1

4

<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 输入元素,而不是跨越某些标记。

也可以看看:

于 2013-04-06T12:20:57.737 回答