在<p:datagrid> </p:datagrid>中使用条件逻辑

时间:2011-01-26 18:14:26

标签: jsf-2 primefaces

我有一个数据表,每列有两个图像,一个显示,还有一个隐藏的图像。如果属性#{pe​​rson.isLocked}结果集设置为“T”,则想法是将隐藏图像放在另一个图像的顶部。我的代码有一个div,其中div有两个div,一个用于主图像,另一个用于将被覆盖的图像。 (下面的代码)要叠加的图像具有样式属性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”或“none”然后像这样调用样式中的person属性。

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

这似乎是一个糟糕的设计。我不想仅仅为了显示目的而操纵我的数据库中的数据。有人发现了不同的做法吗?

1 个答案:

答案 0 :(得分:4)

我从未使用过Primefaces,但你可以试试

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