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

8 respostas
erick.pessoa

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…

8 Respostas

D

já tentou com o escopo de View?

@ViewEscope

A

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;

A

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

D

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

holder

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

D

o que acontece no seu caso holder?

você modificou o escopo do Bean?

holder

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!

D

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.

Criado 19 de janeiro de 2011
Ultima resposta 18 de mar. de 2011
Respostas 8
Participantes 4