我有一个有两列的表。我希望在包含特定值时使用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;
}
目前.occupieddata
为YellowGreen
。当值为“Occupied”时,我希望它为Red
。如下所示:
table.overalltable .occupieddata[occupiedFlag='Occupied'] {
background : Red;
}
或者像这样:
table.overalltable .occupieddata[slotdata='Occupied'] {
background : Red;
}
我怎么能实现这个目标?我使用以下技术:
答案 0 :(得分:2)
这不起作用。您的<h:outputText>
呈现了HTML <span>
元素,因为您在其上指定了id
和style
属性。如果您检查了生成的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
移到样式表中,它就在那里。