Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Estou com dúvida no curso de JSF 2: simplicidade e produtividade na Web, no exercício do capítulo Páginas mais dinámicas com AJAX.

public void gravar() {
        System.out.println("Gravando livro " + this.livro.getTitulo());
        if ( livro.getAutores().isEmpty() ) {
            //throw new RuntimeException("Livro deve ter pelo menos um Autor.");
            FacesContext.getCurrentInstance().addMessage("autor", new FacesMessage("Livro deve ter pelo menos um Autor."));
        }
        new DAO<Livro>(Livro.class).adiciona(this.livro);
        livro = null;
    }

Mesmo apôs atribuir null para objeto livro, o formulário não retorna para limpo....

5 respostas
public void gravar() {
        System.out.println("Gravando livro " + this.livro.getTitulo());
        if ( livro.getAutores().isEmpty() ) {
            //throw new RuntimeException("Livro deve ter pelo menos um Autor.");
            FacesContext.getCurrentInstance().addMessage("autor", new FacesMessage("Livro deve ter pelo menos um Autor."));
        }
        new DAO<Livro>(Livro.class).adiciona(this.livro);
        this.livro = new Livro();
    }

Olá Rogerio

Parece que a sua classe livro não está conseguindo ser validada pelo JSF, por favor verifique novamente a classe. Para ficar mais claro o por que do problema, você pode ler a explicação abaixo:

O tratamento de uma request no JSF segue um ciclo de vida bem definido.

Restore View
Apply Request Values
Process Validations
Update Model Values
Invoke Application
Render Response

Caso o processamento das validações não seja bem sucedido, o JSF não continua processando a request, e por isso a sua lógica do gravar não será invocada.

Olá Rogério, você chegou a verificar o que o colega acima falou? Se algum erro de validação ocorrer, o JSF joga você da fase PROCESS_VALIDATION diretamente para RENDER_RESPONSE. Isso fará com que o seu model não seja atualizado, inclusive sua lógica não será executada devido ao pulo também da fase INVOKE_APPLICATION.

Nao tinha percebido o pulo do framework... obs

solução!

Oi Rogério, então era esse o problema? Era algum dado inválido do formulário que não deixava sua ação ser executada? Deixa claro para a gente só para sabermos se está tudo bem e se foi solucionado seu problema.