Olá pessoal,
Estou com uma dúvida sobre o ciclo de vida do JSF.
Quando ele executa a fase 6 (Render Response), de onde vem os dados para renderizar a página de resposta?
Fiz um teste onde criei um commandButton, associei ele a um método e coloquei a tag immediate=true. Ou seja, o botão faz o JSF executar a primeira e segunda fase e após isso pula direto para a última (sem modificar o modelo). Deixei o bean com a anotação @RequestScope. Além disso criei um input de texto qualquer. Quando clico no botão, o form envia os dados para o servidor, porém, mesmo não havendo atualização do modelo, o input continua a exibir o valor anteriormente digitado.
Enfim... minha dúvida é: O JSF usa o modelo ou a view para renderizar a página de resposta?
Já li alguns materiais (inclusiva na própria Oracle), porém não consegui entender este ponto. Vou colocar o código dos meus testes logo abaixo:
<h:body>
<h1>Gravando dados</h1>
<h:form id="form">
<fieldset>
<legend>Formulario</legend>
<h:messages />
<h:panelGrid columns="2" id="panelgrid">
<h:outputLabel value="Nome" for="nome"/>
<h:inputText value="#{testeBean.nome}" id="nome" />
</h:panelGrid>
<h:commandButton value="Grava" action="#{testeBean.grava}" immediate="true"/>
</fieldset>
</h:form>
</h:body>
@ManagedBean
@RequestScoped
public class TesteBean {
private String nome = "";
public TesteBean() {
System.out.println("Instanciando TesteBean...");
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String grava() {
System.out.println("Gravando..." + nome);
return null;
}
}