Я отрисовываю таблицу с p: dataTable (PrimeFaces), и я хочу покрасить фон ячеек в зависимости от значения их содержимого. Это отличается от окрашивания строки или столбца - это отдельная ячейка.
Сначала проблема с CSS. Если я сделаю это:
<p:column headerText="xyzzy">
<div style="background-color: green">
<h:outputText value="#{rowVar.anumber}" >
<f:convertNumber groupingUsed="true" />
</h:outputText>
</div>
</p:column>
устанавливается цвет фона только для содержимого , а не для всей ячейки. Другими словами, отступы по-прежнему используются по умолчанию.
Во-вторых, я хочу сделать строку style переменным выражением. Я могу добавить функцию к компоненту поддержки, но как мне получить доступ к содержимому таблицы в методе? Будет ли это работать?
<div style="#{bean.computeCSS(rowVar.number}">
EDIT:
Я нашел способ выполнить условную часть, но мне все еще нужна помощь с частью CSS. Мое решение выглядит так:
<p:column headerText="xyzzy">
<div class="#{rowVar.anumber gt 0 ? 'colored' : ''}">
<h:outputText value="#{rowVar.anumber}">
<f:convertNumber groupingUsed="true" />
</h:outputText>
</div>
</p:column>
Несмотря на то, что мне не нравится увлекаться EL, у него есть то преимущество, что ему не нужен метод поддерживающего бина.
Однако я по-прежнему могу установить только цвет фона, а не всю ячейку.