由于
ui:fragment不支持大多数IDE渲染(例如Netbeans将其标记为错误,但它可以工作,因为在JSF中参数是继承的)
这实际上是JSF 2.0
Facelets标记文件声明中的错误(在Mojarra中,就是该
com/sun/faces/metadata/taglib/ui.taglib.xml文件)。该
rendered属性在标记文件声明(以及JSF
2.0
<ui:fragment>标记文档)中被忽略和丢失,而
实际上 在中存在
UIComponent。IDE验证基于标记文件声明,因此会产生误导性的验证错误。此问题已在JSF
2.1中修复,缺少的属性已添加到标记文件声明中(以及JSF 2.1
<ui:fragment>标记文档中)。
如果不能忽略IDE警告或升级到JSF
2.1,则可以考虑使用该
<h:panelGroup>组件:
<h:panelGroup rendered="#{condition}"> <h:outputText value="text 1"/> <h:outputText value="text 2"/> <h:outputText value="text 3"/></h:panelGroup>它输出反正没事,如果你不指定
id,
style,
styleClass和类似的属性,否则简单的
<span>将被渲染。
如果您拥有的只是纯原始HTML(即没有JSF组件),那么您也可以考虑使用
<f:verbatim>。
<f:verbatim rendered="#{condition}"> text 1 text 2 text 3</f:verbatim>然而,
<f:verbatim>被 弃用 的JSF 2.0(这反过来也对了一部纪录片的bug,在JSF 2.0
<f:verbatim>标签文件没有提到折旧,但JSF
2.1
<f:verbatim>标签文档一样)。



