Problema com p:commandButton em p:dataTable, carregada dinamicamente

Olá pessoal …

Estou enfrentando o seguinte problema.
Tenho um conjunto de informações que devem ser exibidos em um p:dataTable, dependendo da opção selecionada em um h:selectOneMenu. Até ai tudo funciona perfeitamente, seleciono uma das opções no componente selectOneMenu, ele atualiza o p:dataTable, tudo maravilhosamente bem.
Dentro da tabela tenho uma coluna que traz um Botão para excluir aquele item.

<p:column> <f:facet name="header"><h:outputText value="#{rotulo.partesequipamento_cadastrado_operacao}" /></f:facet> <p:commandButton id="btExcluirPartes" image="ui-icon ui-icon-trash" ajax="true" update="retorno_operacao, tipoEquipamentoCadastrados" style="width: 20px; height: 20px;" action="#{partesEquipamentoBean.removePartesEquipamento}" > <f:setPropertyActionListener value="#{partesEquipamento}" target="#{partesEquipamentoBean.partesEquipamentoInOperacao}" /> </p:commandButton> </p:column>

Esse bendito botão, é exibido … mas não tem quem faça ele funcionar … no exemplo acima estou usando action, já tentei actionListener … aos meus olhos de iniciante não tem nada de errado no código … Help … não sei mais o que fazer …
O Bean que referencio no action do botão está com o Escopo do tipo: Request
Até fiz um teste com o Escopo em Session até funcionou, mas o comportamento do botão não fica normal, tipo o efeito mouseover que tem, não funciona. E também não queria utilizar muitas classes com o escopo Session.
Existe restrição para gerar os p:commandButton dinamicamente ?

  • Obs.: Tenho outros p:dataTable, com os p:commandButton funcionando perfeitamente … a única diferença entre eles é esse processo de carga apartir de uma interação com o h:selectOneMenu.

desde já agradeço a atenção…

já tentou com o escopo de View?

@ViewEscope

Utilize um commandLink desta maneira, enviando o id por parametro;

xmlns:f="http://java.sun.com/jsf/core"
	<p:column headerText="Deletar">
		<div align="center">
			<p:commandLink
			action="#{partesEquipamentoBean.removePartesEquipamento}" update="retorno_operacao, tipoEquipamentoCadastrados"
			title="Deletar"
			value="Editar">
			<f:param name="parametro" value="#{var.id}" />
			</p:commandLink>
			</div>
	</p:column>

Dentro do bean, receba o parâmetro desta maneira:

  String  parametro = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "parametro" ); 

com o parâmetro no bean, faça a exclusão;

Esqueci, use as anotações no bean:
@ManagedBean(name=“partesEquipamentoBean”) // caso esteja usando jsf 2.0
@ViewScoped
como disse o diegodemourasilva;

Faça desta forma, dará certo

&lt;p:column&gt; &lt;p:commandLink update="retorno_operacao, tipoEquipamentoCadastrados" action="#{partesEquipamentoBean.removePartesEquipamento}"&gt; &lt;f:setPropertyActionListener value="#{partesEquipamento}" target="#{partesEquipamentoBean.partesEquipamentoInOperacao}" /&gt; &lt;/p:commandLink&gt; &lt;/p:column&gt;

e no Bean com escopo de View (@ViewEscope), você utiliza o objeto partesEquipamentoInOperacao que contem o partesEquipamento

Putz, to com o mesmo problema aqui…tentei da forma que o “diegodemourasilva” falou mas não deu certo. erick.pessoa conseguiu resolver?

Abraço

o que acontece no seu caso holder?

você modificou o escopo do Bean?

diegodemourasilva acabei de resolver o problema, o problema é que o <p:commandButton> não dá refresh na página, com <h:commandButton> ele funcionava, eu mudei pra p: ele parou de funcionar. Dei uma procurada e encontrei que o p: não dá refresh na página por usar ajax. Eu setei um ajax=“false” no botão e ele foi bala.
Sou novato, se eu entendi alguma coisa errada e a minha solução foi sorte de principiante fica a vontade pra me corrigir!!!

Obrigado pela ajuda galera!

blz Holder… se a sua intenção for mesmo dar um refresh na página tudo bem

mas no meu caso, eu utilizo um dataTable que ao clicar no commandLink dentro dele, envia e seta um objeto do Bean e ao completar a seleção abre um dialog com outro dataTable que exibe uma lista com base no objeto do bean selecionado.