Olá. Isso não chega a ser um problema mas uma dúvida sobre os caminhos que o jsf escolhe. Eu tenho alem de marcar os PhaseListener marcado todo método com uma assinatura unica sysout para saber quando e se foi chamado e me intriguei vendo que o jsf chama alguns métodos várias vezes durante algumas requisições em que deveria ser uma apenas. ex na tela de Autor com console em branco quando clico em por exemplo alterar algum autor na lista o console mostra o seguinte.
FASE: RESTORE_VIEW 1
FASE: APPLY_REQUEST_VALUES 2
carregando autores
carregando autores
carregando autores
FASE: PROCESS_VALIDATIONS 3
carregando autores
carregando autores
carregando autores
FASE: UPDATE_MODEL_VALUES 4
carregando autores
carregando autores
carregando autores
FASE: INVOKE_APPLICATION 5
carregando autores
carregando autor
FASE: RENDER_RESPONSE 6
carregando autores
carregando autores
carregando autores
Minha classe AutorBean:
@ManagedBean
@ViewScoped
public class AutorBean {
private Autor autor = new Autor();
public Autor getAutor() {
return autor;
}
public void gravar() {
System.out.println("Gravando autor " + this.autor.getNome());
if(autor.getId()==null)
new DAO<Autor>(Autor.class).adiciona(this.autor);
else
new DAO<Autor>(Autor.class).atualiza(autor);
autor = new Autor();
}
public List<Autor> getAutoresCadastrados() {
System.out.println("carregando autores");
return new DAO<Autor>(Autor.class).listaTodos();
}
public void excluirAutor(Autor autor) {
System.out.println("excluindo autor");
new DAO<Autor>(Autor.class).remove(autor);
}
public void carregarAutor(Autor autor) {
System.out.println("carregando autor");
this.autor=autor;
}
public void imprimirMensagem() {
System.out.println("imprimindo mensagem botão teste");
}
}
Não entendo o ciclo dessas chamadas, alguem sabe explicar?