[RESOLVIDO] excluir item de tabela usando jsf + ajax + richfaces

10 respostas
hudson.negao

Possuo esses métodos no bean

public String excluirMarca(){
        System.out.println("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
        return null;
    }
    
    public void listenerExcluir(ActionEvent evento){
        FacesContext context = FacesContext.getCurrentInstance();
        //MarcaVo marca = new MarcaVo();
        String cdMarca = context.getExternalContext().getRequestParameterMap().get("parametro").toString(); 

        System.out.println(cdMarca);
    }

minha página ta assim

<rich:panel header="Busca Usando RichFaces">
                <a4j:form>
                    <rich:dataTable value="#{marcaMbean.listaMarcaVO}" var="marca" id="tabela">
                        <f:facet name="header">
                            <h:outputText value="Marcas Cadastradas" />
                        </f:facet>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="Codigo" />
                            </f:facet>
                            <h:outputText value="#{marca.id}" />
                        </rich:column>
                        <rich:column >
                            <f:facet name="header">
                                <h:outputText value="Nome" style="width:300px;"/>
                            </f:facet>
                            <h:outputText value="#{marca.nome}" />
                        </rich:column>
                        <rich:column>
                            <f:facet name="header">
                                <h:outputText value="" />
                            </f:facet>
                            <a4j:commandButton value="Apagar" action="#{marcaMbean.excluirMarca}" actionListener="#{marcaMbean.listenerExcluir}" reRender="tabela">
                                <f:param id="parametro" name="parametro" value="#{marca.id}"/>
                            </a4j:commandButton>
                        </rich:column>
                    </rich:dataTable>
                    <a4j:commandButton value="Buscar Marcas" action="#{marcaMbean.listaTodosMarca}" reRender="tabela"/>
                </a4j:form>
            </rich:panel>

pergunto: tenho que configurar alguma coisa no meu faces-config para poder passar o parametro pro meu bean?

<a4j:commandButton value="Apagar" action="#{marcaMbean.excluirMarca}" actionListener="#{marcaMbean.listenerExcluir}" reRender="tabela">
                                <f:param id="parametro" name="parametro" value="#{marca.id}"/>
                            </a4j:commandButton>

não estou conseguindo fazer excluir um item da tabela
voces sabem onde eu posso arrumar algum exemplo disso? ou alguma documentação?

10 Respostas

H

Bom dia!

Não precisa configurar nada no faces-config.xml…

No seu método listenerExcluir tente fazer dessa forma…

UIParameter comp = (UIParameter)evento.getComponent().findComponent("parametro");
System.out.println(comp.getValue());

Beleza!

hudson.negao

então cara, eu aperto o botao apagar, ele não aparece o sysout.
aparentemente ele não ta chamando nem o listener nem o metodo excluir.
sabe o q pode ser?

H

Então…
Deixa no seu commandButton somente o actionListener…

hudson.negao

também não deu

dansouza

Pelo modo debug da IDE (Eclipse ou Netbeans, presumo eu) não consegue colocar um breakpoint?

[]'s

hudson.negao

colocar o breakpoint eu consigo, mais ele não chega no método.no faces config meu bean esta com escopo request isso pode influenciar em algo?

dansouza

Creio que não influencia.
Eu tenho uma página que acessa um backingbeanem request tb e o actionListener está ok.
Seus mapeamentos estão todos corretos, não há erros de digitação?

Aparece alguma coisa no log do servidor?

hudson.negao

cara esta tudo exatamente como esta ali, nao aparece nada no console do apache, resumindo: é como se a ação não fosse invocada.

hudson.negao

alguem?

hudson.negao

apos alguns dias perdidos em cima disso, graças ao nosso amigo Peerless que conceguiu achar a solução para o problema.
o problema é que segundo o urubatan http://www.urubatan.com.br/jsf_commandlink_datatable_problemas/
o commandLink e o commandButton dentro de uma tabela não funcionam se o escopo do seu bean for request. Se você trocar para session funcionara correntamente. No meu caso por estar a4j eu utilizei a tag a4j:keepAlive.
Muito Obrigado a todos que colaboraram.

Criado 4 de setembro de 2008
Ultima resposta 7 de set. de 2008
Respostas 10
Participantes 3