У меня есть вспомогательный компонент (скажем, MyPageBean) с областью запроса, но он, похоже, находится в сеансе, потому что при навигации по моему приложению, когда я посещаю страницу myPage, я всегда получаю один и тот же экземпляр. Я использую JSF 1.2, IceFaces 1.8.2 и JBoss 5.1.0.
Компонент поддержки области запроса не находится в запросе
Ответы (2)
Разве это не только ваш веб-браузер или прокси-сервер, который агрессивно кэширует веб-страницы?
Создайте Filter
, который делает следующее в методе doFilter()
, чтобы указать клиенту не кэшировать HTTP-ответ:
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
hsr.setHeader("Pragma", "no-cache"); // HTTP 1.0.
hsr.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);
и отобразите его в web.xml
следующим образом:
<filter>
<filter-name>cacheFilter</filter-name>
<filter-class>com.example.CacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>cacheFilter</filter-name>
<servlet-name>facesServlet</servlet-name>
</filter-mapping>
предполагая, что вы сопоставили экземпляр FacesServlet
с <servlet-name>
из facesServlet
.
person
BalusC
schedule
30.09.2010
Как вы подтвердили, что bean-компонент, который использует страница, действительно находится в области запроса? Как вы подтвердили, что каждый раз получаете один и тот же экземпляр? Вы делали какие-то системные распечатки для бедняков? Какой и где? Или вы запускали отладчик с точкой останова в конструкторе компонента? Вы определили
#{requestScope}
и #{sessionScope}
? И так далее.
- person BalusC; 30.09.2010
В ICEFaces область запроса распространяется на частичные отправки. Поэтому, если ваше приложение никогда не обновляет всю страницу и использует только частичные отправки, вы можете столкнуться с этим.
Неиспользование частичной отправки в навигации должно решить вашу проблему.
person
Adam
schedule
01.10.2010