[Resolvido]Desabilitar botão quando selecionar row primeFaces

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 ?