在 Facelets 中有条件地添加 HTML 元素属性

Conditionally add HTML element attribute in Facelets

使用 Facelets 并编写一些 XHTML,我不知道如何创建一个元素然后添加属性,就像在 xslt 中,如果您想有条件地添加一个属性:

<xsl:element name="div">
    <xsl:attribute name="style">color:blue;</xsl:attribute>
</xsl:element>

Google 给出了一些带有 JSP taglib 的示例,类似于

<jsp:element name="div">
     <jsp:attribute name=".">...</jsp:attribute>
</jsp:element>

该库并未作为 Facelets 中的标准提供,搜索包含的库的文档也没有显示任何明显的内容。

在真正的 JSF 组件上使用 <c:if><f:attribute>

<h:panelGroup layout="block">
    <c:if test="#{bean.condition}"><f:attribute name="style" value="color:blue;"/></c:if>
</h:panelGroup>

顺便说一句,您真的应该在 CSS 样式表文件中使用完全有价值的 CSS 类,而不是在标记的所有地方使用紧密耦合的 style 属性。

您可以有条件地声明样式 类,如下所示:

<h:panelGroup layout="block" styleClass="#{bean.condition ? 'foo' : 'bar'}" />