Questo è dispari. Forse il tuo bean è inserito nello scope della sessione e/o il browser ha richiesto la pagina dalla cache. Per iniziare, desideri disattivare la cache del browser per tutte le pagine dinamiche con uno filter che imposta le intestazioni di risposta appropriate.
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
if (!req.getRequestURI().startsWith(req.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
res.setDateHeader("Expires", 0); // Proxies.
}
chain.doFilter(request, response);
}
Mappa del filtro sul nome del servlet FacesServlet
o sullo stesso modello di URL.
Ultimo, ma non meno importante, non inserire i bean di form nello scope della sessione. Inserirli nella richiesta o visualizzare l'ambito.
JSF Guru ... B. La tua risposta ha aiutato a risolvere un bug ... Grazie ... – user684434
Prego. – BalusC
Oggi ho trovato lo stesso con GlassFish 3.1.1, con un bean ViewScope. Quando torno indietro, premo il pulsante di invio la seconda volta che il pulsante ** non viene eseguito ** e il browser (FireFox) visualizza la vista con il risultato precedente. Il codice del pulsante è ' '. Il modulo di ricerca e il datatable del risultato si trovano nella stessa vista del file xhtml (ma inclusi come facelet). Proverò ad analizzarlo. –
mjn