启用 - 禁用p:datatable primefaces / jsf中的按钮

时间:2014-10-26 02:21:27

标签: jsf primefaces datatable

我有一个<p:datatable>个人列表,每行都有一个按钮,用于启用/禁用此人。此按钮仅具有更改用户状态(活动/未激活)的功能。为了向用户展示我喜欢这个:

<h:outputLabel value="Status" />
<h:selectOneMenu value="#{pessoaBean.ativo}">
    <f:selectItem itemLabel="Todos" itemValue="-1" />
    <f:selectItem itemLabel="Ativo" itemValue="1" />
    <f:selectItem itemLabel="Inativo" itemValue="0" />
</h:selectOneMenu>

这允许我只显示活动用户或非活动用户。这很好用。我的问题是,当我有一个活跃的人员列表时,我想要按钮A,当一个人不活动时,我想显示按钮B.每个按钮(A和B)都具有改变状态的功能用户,但显然一个按钮在不活动时变为活动而相反。

我的p:datatable如下:

<p:dataTable value="#{pessoaBean.pessoas}" var="pes" id="tabelaUsuarios"
             paginator="true" rows="10" emptyMessage="Nenhum registro encontrado"
             sortOrder="acending"   selectionMode="single" rowKey="#{pes.cdPessoa}" 
             rendered="#{pessoaBean.pessoas != null}"
             paginatorPosition="bottom"  scrollable="false">
    <p:column headerText="Nome">
        #{pes.nmPessoa}
    </p:column>
    <p:column headerText="Email" >
        #{pes.email}
    </p:column>
    <p:column headerText="Status">
        #{pes.flAtivo}
    </p:column>
    <p:column>
        <h:commandButton action="#{pessoaBean.bloquear}"  value="Bloquear" 
                         class="btn btn-default"  >
            <f:param value="#{pes.cdPessoa}" name="id" />
        </h:commandButton>
    </p:column>                 
</p:dataTable>

有人知道我怎么能得到这个结果吗?只显示带有活动人员的按钮A和带有非活动状态的按钮B

1 个答案:

答案 0 :(得分:1)

您可以通过在同一列中包含两个具有相反或不同rendered属性的按钮来实现此目的。如果&#34; Bloquear&#34;是你指的按钮,它会是这样的:

<p:column>
    <h:commandButton action="#{pessoaBean.bloquear}" value="Bloquear" 
                     rendered="#{pes.flAtivo eq 1}" class="btn btn-default">
        <f:param value="#{pes.cdPessoa}" name="id" />
    </h:commandButton>
    <h:commandButton action="#{pessoaBean.desbloquear}" value="Desbloquear" 
                     rendered="#{pes.flAtivo eq 0}" class="btn btn-default" >
        <f:param value="#{pes.cdPessoa}" name="id" />
    </h:commandButton>
</p:column> 

顺便提一句,你应该是sortOrder="ascending"