JSF / CSS属性选择器

时间:2011-08-11 20:30:48

标签: css jsf css-selectors

我有一个有两列的表。我希望在包含特定值时使用CSS以不同方式设置第二列的值。

以下是观点:

<h:dataTable id="tb_USER_DETAILS" border="1" var="userDtls"
    value="#{freqViewTable.freqDtlsTable}" columnClasses="keydata, occupieddata"
    style="width: 250px" styleClass="overalltable">
    <h:column id="frequency">
        <f:facet name="header">
            <h:outputText value="Frequency (Hz)" style="font-size:12pt" />
        </f:facet>
        <h:outputText value="#{userDtls.keyFrequency}" style="font-size: 12pt"/>
    </h:column>
    <h:column id="slot">
        <f:facet name="header">
            <h:outputText value="Slot" style="font-size:12pt" />
        </f:facet>
        <h:outputText id="slotdata" value="#{userDtls.occupiedFlag}" style="font-size: 12pt"/>
    </h:column>
</h:dataTable>

css文件是:

table {
   background : Blue ;
}

table.overalltable th {
    background : Yellow;
}

table.overalltable tr {
    background : White;
}

table.overalltable .keydata {
    background : Orange;
}

table.overalltable .occupieddata {
    background : YellowGreen;
}

目前.occupieddataYellowGreen。当值为“Occupied”时,我希望它为Red。如下所示:

table.overalltable .occupieddata[occupiedFlag='Occupied'] {
    background : Red;
}

或者像这样:

table.overalltable .occupieddata[slotdata='Occupied'] {
    background : Red;
}

我怎么能实现这个目标?我使用以下技术:

  • Java 1.6.0_22-b03
  • JSF 1.2
  • JSTL 1.2
  • Eclipse 3.6.0(Helios)
  • Tomcat 6.0.28(需要在Weblogic上运行)
  • IE 7.0.5730.13
  • Firefox:3.6.12

1 个答案:

答案 0 :(得分:2)

这不起作用。您的<h:outputText>呈现了HTML <span>元素,因为您在其上指定了idstyle属性。如果您检查了生成的HTML代码,它应该如下所示

<td class="occupieddata"><span id="slotdata" style="font-size: 12pt">Occupied</span></td>

现在,您可以按如下方式添加另一个样式类:

<h:outputText id="slotdata" value="#{userDtls.occupiedFlag}"
    style="font-size: 12pt" styleClass="#{userDtls.occupiedFlag}" />

所以最终结果如下:

<td class="occupieddata"><span id="slotdata" style="font-size: 12pt" class="Occupied">Occupied</span></td>

然后您可以将其设置为红色,如下所示:

table.overalltable .occupieddata .Occupied {
    background : Red;
}

顺便提一下,考虑将标记中的所有style="font-size:12pt移到样式表中,它就在那里。