[RESOLVIDO] Atualizar parametro prime faces

Então galera, tenho uma <p:dataTable> que é o meu carrinho de compras, nele tem a listaItemCarrinho;

consigo adicionar os items nele certinho.

Porem na hora de excluir um item do carrinho, tenho que clicar 2 vez no botao excluir pra ele carregar o atributo no Bean Controlador e excluir o produto da lista. alguem pode me ajudar??

Segue o codigo:

carrinho.xhtml

<h:form id="formCarrinho">
    <p:dataTable id="carrinhoCompras" var="produtoCarrinho" value="#{carrinhoBean.listaItemCarrinho}" rendered="#{carrinhoBean.mostrarCarrinho}">
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Produto"/>
                    </f:facet>
                    <h:outputText value="#{produtoCarrinho.prod.nome}"/>
                </p:column>
                    <p:column>
                    <f:facet name="header">
                        <h:outputText value="Quan"/>
                    </f:facet>
                        <h:outputText value="#{produtoCarrinho.quantidadeEscolhida}"/>
                </p:column>
                <p:column>
                    <f:facet name="header">
                        <h:outputText value="Preço"/>
                    </f:facet>
                    <h:outputText value="#{produtoCarrinho.prod.valor}"/>
                </p:column>
                  <p:column>
                    <f:facet name="header">
                        <h:outputText value="Total"/>
                    </f:facet>
                      <h:outputText value="#{produtoCarrinho.totalQuantidadeXPreco}"/>
                </p:column>
         
                  <p:column>
                    <f:facet name="header">
                        <h:outputText value="Excluir"/>
                    </f:facet>
                      <p:commandButton value="X" actionListener="#{carrinhoBean.removeItemCarrinho}" update="formCarrinho">

                          <f:setPropertyActionListener value="#{produtoCarrinho.prod}"
                                                                     target="#{carrinhoBean.prod}" />
                      </p:commandButton>

                </p:column>
            </p:dataTable>
   

CarrinhoBean




    public void removeItemCarrinho() {

        List<ItemCarrinho> novaListaItemCarrinho = new ArrayList<ItemCarrinho>();

        if (listaItemCarrinho.size() == 1) {

           listaItemCarrinho = new ArrayList<ItemCarrinho>();
           totalPedido = 0;
           mostrarCarrinho = false;
        } else {


            for (int x = 0; x < listaItemCarrinho.size(); x++) {
                Produto prodCompare = listaItemCarrinho.get(x).getProd();
                if (prodCompare == prod) {

                    totalPedido -= ((prod.getValor()) * listaItemCarrinho.get(x).getQuantidadeEscolhida());
                    totalPedido = utilitarios.Conversores.converterParaDuasCasasAposVirgula(totalPedido);
                } else {

                    novaListaItemCarrinho.add(new ItemCarrinho(listaItemCarrinho.get(x).getProd(), listaItemCarrinho.get(x).getQuantidadeEscolhida()));
                }

            }
            listaItemCarrinho = novaListaItemCarrinho;
        }

    }

O metodo funciona certinho, o problema é ter que clicar 2 vez no excluir pra ele passar o parametro é como se primeiro ele executasse o metodo no actionListener pra depois disso passar o parametro. Se alguem puder ajudar Obrigado.

vou tentar adivinhar!!! vc esta usando o iexplorer ???

Se sim pode ser isso teste no firefox, pois tive problemas com o update no iexplorer, outra coisa qual a versão do primefaces que vc está usando ???

Boa tarde!

Tente substituir update="formCarrinho" por update="@form".
Abraços.

[quote=Polverini]vou tentar adivinhar!!! vc esta usando o iexplorer ???

Se sim pode ser isso teste no firefox, pois tive problemas com o update no iexplorer, outra coisa qual a versão do primefaces que vc está usando ???[/quote]

Não Funciona no IE, nem no CHROME.
Uso primefaces 2.2.1

[quote=nel]Boa tarde!

Tente substituir update="formCarrinho" por update="@form".
Abraços.[/quote]

Não funcionou tambem.

Debuguei e notei que ele só passa o parametro depois de executar o metodo removeItemCarrinho, dai quando clico novamente, o parametro ja esta setado, e funciona.
Alguem mais?

Obrigado por enquanto.

Adicione a tag no seu commandButton ajax = false.
Tente :slight_smile:

[quote=nel]Adicione a tag no seu commandButton ajax = false.
Tente :)[/quote]

Não funcinou, no 1° click ele parece atualizar a pagina, dai no segundo click funciona ^^

Obrigado por enquanto. Alguem mais ?

ale0790, tente fazer da forma abaixo… com commandLink e mudando para action, desta forma, a propriedade é setada antes da execução do método…

<p:column> <p:commandLink update="formCarrinho" action="#{carrinhoBean.removeItemCarrinho}"> <f:setPropertyActionListener value="#{produtoCarrinho.prod}" target="#{carrinhoBean.prod}" /> </p:commandLink> </p:column>

[quote]ale0790, tente fazer da forma abaixo… com commandLink e mudando para action, desta forma, a propriedade é setada antes da execução do método…

&lt;p:column&gt; &lt;p:commandLink update="formCarrinho" action="#{carrinhoBean.removeItemCarrinho}"&gt; &lt;f:setPropertyActionListener value="#{produtoCarrinho.prod}" target="#{carrinhoBean.prod}" /&gt; &lt;/p:commandLink&gt; &lt;/p:column&gt; &lt;p:column&gt; &lt;p:commandLink update="formCarrinho" action="#{carrinhoBean.removeItemCarrinho}"&gt; &lt;f:setPropertyActionListener value="#{produtoCarrinho.prod}" target="#{carrinhoBean.prod}" /&gt; &lt;/p:commandLink&gt; &lt;/p:column&gt;
[/quote]

Funcionou.

Obrigado :smiley:

por nada… :smiley:

Consegui era algums tags do xhtml que estavam comentadas e o interpretador estava lendo.