Amigos, estou impaciente com esses escopos dos Managed Beans e com o ciclo de vida deles.
Toda vez que tento fazer algo com jsf só consigo deixando o Managed Bean com escopo session.
Se for request, eu perco os valores das variáveis toda vez que faço um submit na página.
Como posso fazer para manter o valor das minhas variáveis, por exemplo no código abaixo?
Toda vez que pressiono o botão VOLTAR da página Teste2.xhtml, eu mando imprimir o valor da variável MeuNome…
Mas vem null todas as vezes, pois o Bean sempre é criado.
Eu li a respeito do immediate=true, onde ele executaria primeiro o método antes do submit… Mas não soube como utilizá-lo.
Qual a solução para isso deixando o escopo Request e sem utilizar variáveis estáticas?
Teste1.xhtml
<body>
<f:view>
<h:form>
<h:commandButton action="Teste2" value="Teste">
<f:setPropertyActionListener value="George" target="#{teste2BEAN.meunome}" />
</h:commandButton>
</h:form>
</f:view>
</body>
Teste2.xhtml
<body>
<f:view>
<h:form>
<h:outputText value="#{teste2BEAN.meunome}" />
<h:commandButton value="Voltar" action="#{teste2BEAN.botaoOKAction}" />
</h:form>
</f:view>
</body>
Teste2Bean.java
public class Teste2BEAN {
private String meunome;
public String getMeunome() {
return meunome;
}
public void setMeunome(String meunome) {
this.meunome = meunome;
}
public String botaoOKAction()
{
System.out.println(meunome);
return "teste1";
}
}