Условная логика простых чисел в <p: dataGrid> - PullRequest
3 голосов
/ 26 января 2011

У меня есть таблица данных, в которой есть два изображения в столбце, одно из которых отображается, а также скрытое изображение, которого нет.Идея состоит в том, чтобы отключить скрытое изображение поверх другого изображения, если для результирующего набора атрибута # {person.isLocked} установлено значение 'T'.В моем коде есть div, и внутри этого div есть два div, один для основного изображения, а другой для изображения, которое будет наложено.(Код ниже) Изображение, которое должно быть наложено, имеет атрибут style display: none;,Мне нужно как-то проверить, чтобы узнать, равен ли # {person.isLocked} 'T', если так, то мне нужно изменить css на display: block;иначе оставь это.

<p:dataGrid var="person" value="myBean.people">
    <p:column>
        <h:panelGird style="margin-left:auto; margin-right:auto;">
           <div>
              <div style="position:absolute; z-index:1;">
                   <p:graphicImage value="image?id=#{person.id}" cache="false"/>
              </div>
              <div style="position:absolute; z-index:100; display: none;">
                   <p:graphicImage value="./images/lock.png" cache="true"/>
              </div>
           </div>
        </h:panelGrad>
    </p:column>
</p:dataGrid>

Единственное решение, которое я придумала, - вместо того, чтобы хранить 'T' или 'F' в базе данных как # {person.isLocked}, вместо этого сохраните атрибут css, чтобы я сохранялblock 'or' none 'и затем вызвать атрибут person в стиле следующим образом.

     <div style="position:absolute: z-index:100; display: #{person.isLocked}">
         <p:graphicImage value="./images/lock.png" cache="true"/>
     </div>

Хотя это кажется плохим дизайном.Я не хочу манипулировать данными в моей базе данных только для целей отображения.Кто-нибудь нашел другой способ сделать это?

1 Ответ

4 голосов
/ 26 января 2011

Я никогда не использовал Primefaces, но вы можете попробовать

<ui:fragment rendered="#{person.isLocked}">
 <!-- your div here -->
</ui fragment>
...