JSF RI: como resetar um formulario!

3 respostas
Sparcx86

Estou fazendo uma aplicação simples de CRUD com JSF RI.
Tenho um bean de sessão (tem que ser de sessão) ele inclui, altera, exclui e pesquisa resultados em um banco de dados. Ao clicar em uma linha da datatable ele preenche os campos do form para que eu altere.
Até aí tudo bem, o problema é que depois de atualizar os campos não consigo apaga-los! Já tentei de tudo, até excluir o bean da session mas ainda assim os campos continuam preenchidos! :roll:

O bean tem que ser de sessão pois a minha datatable só funciona assim!
Segue minhas tentativas:

Metodo de reset

public void reset() {
        FacesContext.getCurrentInstance().getApplication()
                .createValueBinding( "#{backing_Produto}").setValue(FacesContext.getCurrentInstance(), null );
        

        codigo.setValue(null);
        idProduto.setValue(null);
        nome.setValue(null);
        valorUnitario.setValue(null);
        quantidade.setValue(null);
        deleteButton.setDisabled(true);
    }
Botão no jsp (invoca o metodo, mas não apaga os campos:
<h:commandButton value="Limpar"
                               binding="#{backing_Produto.cleanButton}"
                               id="cleanButton"
                               action="#{backing_Produto.reset}" immediate="true" type="submit"/>

Bem é isso aí, se alguem tiver alguma gambi, ou melhor dica para solucionar isso de forma prática agradeceria muito... :cry: :lol: :x

3 Respostas

gui_sv

Acho q assim seria mais facil… eheheh

<h:commandButton type="reset" value="Limpar" />

no type só sao validos: submit e reset !

vlw

Sparcx86

gui_sv:
Acho q assim seria mais facil… eheheh

<h:commandButton type="reset" value="Limpar" />

no type só sao validos: submit e reset !

vlw


Na verdade esta foi a primeira tentativa que fiz, mas não acontecia nada com o formulario.

K

Aew gente sei que o tópico é bem antigo mas eu achei interessante postar o que descobri.

Como eu consegui limpar os dados de um formulário JSF após uma certa operação.

No meu caso eu queria limpar um formulário de cadastro de contas a pagar e receber o que eu fiz foi o seguinte.

1-Criei este método.

public static void setBean(String ref, Object val){
        // Obtém o faces context.
        FacesContext facesContext = FacesContext.getCurrentInstance();
        // Cria a expressão que possibilitará o acesso ao managed bean.
        ref = "#{" + ref + "}";
        ELContext eLContext = facesContext.getELContext();
        ExpressionFactory ef = facesContext.getApplication().getExpressionFactory();
        // Aqui é o pulo do gato. Aqui é passado o novo valor para o managed bean
        // que está no contexto do JSF através do método "setValue()".
         ef.createValueExpression(eLContext, ref, Object.class).setValue(eLContext, val);
    }

Deixei o método estático por conveniência já que não preciso instanciar meu helper para fazer a chamada ao método. Este método vai substituir o managed bean que está com as informações que você não precisa por um novinho em folha para sua view.

2- Daí coloco em um commandButton a ação definida no método abaixo. (No meu caso o adicionar de um objeto no banco de dados) :

@Override
    public String adicionar() {
        // No meu caso estou usando herança e as ações são executadas na super classe.
        super.adicionar();
        // Aqui apenas chamo o método que substituirá o bean antigo pelo novo.
        HelperFaces.setBean(HelperFaces.NOME_BEAN_PLANO_CONTA, new PlanoConta());
        return "";
    }

Eu estou usando richFaces e sua biblioteca a4j então o commandButton ficou assim(Eu acho o ajax uma das 7 maravilhas do mundo hehehehehehe “Brincadeirinha” mas é muito bom msm):

<a4j:commandButton action="#{planoContaManager.adicionar}"
                                 value="Incluir" 
                                 rendered="#{planoContaManager.incluindo}"
                                 reRender="form"/>

Bom é isso ai. Espero que as próximas pessoas que estiverem com o mesmo dilema que eu estava possam ser ajudados por esta ideia vlw.

Criado 27 de outubro de 2008
Ultima resposta 24 de abr. de 2012
Respostas 3
Participantes 3