Ao implementar o código par alterar autor, deparei-me com o seguinte problema, os dados do autor estavam sendo carregados no inputText, mas ao clicar em Gravar um novo autor era sempre cadastrado. O Id estava sempre nulo. Abaixo o código do método gravar:
public String gravar() {
System.out.println("Gravando autor " + this.autor.getNome());
if (this.autor.getId() == null) {
System.out.println("Adicionando autor..." + this.autor.getNome());
new DAO<Autor>(Autor.class).adiciona(this.autor);
return "livro?faces-redirect=true";
}
else{
System.out.println("Atualizando autor..." + this.autor.getNome());
new DAO<Autor>(Autor.class).atualiza(this.autor);
new FacesMessage("Autor atualizado...");
return "";
}
}
Notei que ao retirar a linha new FacesMessage("Autor atualizado...");
o método foi corretamente executado e o autor alterado. A intenção era apenas exibir uma mensagem na página de que o autor havia sido alterado.
Poderia me explicar o porquê da criação do FacesMessage estar criando este comportamento de não alterar o Autor e perder as referências a este?