Это может произойти, если страница действительно загружена из кеша браузера или если ваше веб-приложение где-то делает недействительным сеанс после ответа на самый первый запрос.Поскольку последний подход довольно странный, я подозреваю, что это просто кеш браузера.Вам нужно создать фильтр, чтобы браузер не кэшировал запросы JSF.Фильтр должен быть сопоставлен с <servlet-name>
из FacesServlet
и выполнять следующую работу в методе doFilter()
:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
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);
}
Не забудьте очистить кеш браузера перед тестированием веб-приложения с новымфильтр.
См. также:
Не связано к конкретной проблеме, у вас есть главная проблема проектирования: вы используете командные ссылки для выполнения постраничной навигации.Там они не для.Командные ссылки должны использоваться для отправки формы.Вы должны использовать <h:outputLink>
или обычные элементы HTML <a>
для постраничной навигации.Таким образом, страницы будут добавлены в закладки, searchbot-indexable, и URL в адресной строке браузера больше не будет «на шаг позади».См. Также Когда мне следует использовать h: outputLink вместо h: commandLink?