Pessoal, Boa Tarde!
Estou tentando habilitar/desabilitar botões com EL Expression ao selecionar uma linha do dataTable primeFaces, porém não está funcionando.
Segue meu código:
DataTable
<p:dataTable id="dataTable" value="#{pedidoBean.pedidosEmAberto}"
selection="#{pedidoBean.pedido}" rowKey="#{p.idPedido}"
selectionMode="single" var="p" rows="10" paginator="true">
<!-- Quando seleciono a row atualiza o menuBar-->
<p:ajax event="rowSelect" update=":form:menuBar"/>
</p:dataTable>
O menuBar tem um botão com EL Expression no atributo disabled, conforme abaixo:
<p:commandButton id="btCancelar" icon="ui-icon-closethick"
value="Cancelar" disabled="#{!empty pedidoBean.pedido}"
title="Cancelar Pedido" update="@this" />
Ao selecionar a linha não acontece nada, porém o valor de “pedido” não está nulo.
Obrigado.
Você não fez nada com nada rs. Cadê o listener do evento ajax ? Se olhar o exemplo do primefaces tem um evento que é um metodo no MB
Boa tarde,
Mais pra que eu preciso disparar algum evento no ManagedBean?
Quando seleciono a linha da tabela, consequentemente o meu objeto “pedido” não está mais nulo,então só estou dando um update no menu bar pra executar a validação disabled="#{!empty pedidoBean.pedido}"
.
você tem que disparar o evento para setar seu objeto, fora que a verificação está vendo se esta vazio e não nulo, que é diferente.
Boa Noite,
Consegui resolver o problema.
No meu ManagedBean criei o seguinte método:
public boolean pedidoIsNull(){
if(pedido != null){
return this.disabledBtPedido = false;
}else {
return this.disabledBtPedido = true;
}
}
E no meu botão, no atributo disabled chamei minha variável booleana “disabledPedido”.
No listener do ajax, chamei o método que criei, conforme abaixo:
<p:ajax event="rowSelect" update=":form:menuBar" listener="#{pedidoBean.pedidoIsNull()}" />
Obrigado pela ajuda.
De nada cara, está fazendo um sistema de faturamento ? Tem que como mandar o print desta tela ?