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

Mit*_*ead 1 jsf facelets

使用 Facelets 并编写一些 XHTML,我无法弄清楚如何创建一个元素,然后在稍后添加属性,例如在 xslt 中,如果您想有条件地添加一个属性:

<xsl:element name="div">
    <xsl:attribute name="style">color:blue;</xsl:attribute>
</xsl:element>
Run Code Online (Sandbox Code Playgroud)

谷歌给出了一些类似于 JSP taglib 的例子

<jsp:element name="div">
     <jsp:attribute name=".">...</jsp:attribute>
</jsp:element>
Run Code Online (Sandbox Code Playgroud)

该库未作为 Facelets 中的标准提供,并且搜索包含的库的文档不会显示任何明显的信息。

Bal*_*usC 7

使用<c:if><f:attribute>一个真正的JSF组件。

<h:panelGroup layout="block">
    <c:if test="#{bean.condition}"><f:attribute name="style" value="color:blue;"/></c:if>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

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

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

<h:panelGroup layout="block" styleClass="#{bean.condition ? 'foo' : 'bar'}" />
Run Code Online (Sandbox Code Playgroud)