Galera estou com um problema quando o usuário navega entre as páginas.
O problema ocorre quando o usuário passa por uma página que contém o código:
<h:panelGrid>
<rich:panel>
<f:facet name="header">
<h:outputText value="Selecione o Usuário"></h:outputText>
</f:facet>
<rich:select value="#{selectUserAndPhase.itemUserValue}" defaultLabel="Selecione"
valueChangeListener="#{selectUserAndPhase.valueChanged}" id="selectUserMenu" required="true"
requiredMessage="obrigatório">
<f:selectItems value="#{selectUserAndPhase.listUser}" />
<a4j:ajax event="selectitem" render="selectPhase" execute="@this" />
</rich:select>
</rich:panel>
<rich:message for="selectUserMenu" />
<br />
<a4j:outputPanel id="selectPhase" layout="block" >
<rich:panel>
<f:facet name="header">
<h:outputText value="Selecione a Fase"></h:outputText>
</f:facet>
<rich:select value="#{selectUserAndPhase.itemPhaseValue}" defaultLabel="Selecione" id="selectPhaseMenu" required="true"
requiredMessage="obrigatório">
<f:selectItems value="#{selectUserAndPhase.listPhase}" />
</rich:select>
</rich:panel>
<rich:message for="selectPhaseMenu" />
</a4j:outputPanel>
</h:panelGrid>
Quando o usuário volta para essa página o combo não é atualizado(rich:select) e o a4j:outputPanel já vem com a mensagem de erro “obrigatório”.
Teria alguma maneira de quando o usuário clicar no botão voltar do browser eu recarregar o primeiro combo para que o segundo combo só seja atualizado
quando o usuário selecionar algum item no primeiro combo?
Um detalhe é que quando o usuário volta da outra página o primeiro combo já vem com o valor setado, queria recarregar esse cara.
Já tenho no meu faces-config.xml um PhaseListener implementado com o método:
public void beforePhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
HttpServletResponse response = (HttpServletResponse)facesContext.getExternalContext().getResponse();
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
response.addHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "must-revalidate");
response.addHeader("Expires", "0");
}
Se o usuário usar o botão voltar da minha aplicação eu consigo recarregar o combo, mas se ele usar o do browser
nada funciona :(.
Se alguem puder me ajudar eu agradeço!!