Компонент поддержки области запроса не находится в запросе

У меня есть вспомогательный компонент (скажем, MyPageBean) с областью запроса, но он, похоже, находится в сеансе, потому что при навигации по моему приложению, когда я посещаю страницу myPage, я всегда получаю один и тот же экземпляр. Я использую JSF 1.2, IceFaces 1.8.2 и JBoss 5.1.0.


person Massimo    schedule 30.09.2010    source источник


Ответы (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
comment
Как вы подтвердили, что bean-компонент, который использует страница, действительно находится в области запроса? Как вы подтвердили, что каждый раз получаете один и тот же экземпляр? Вы делали какие-то системные распечатки для бедняков? Какой и где? Или вы запускали отладчик с точкой останова в конструкторе компонента? Вы определили #{requestScope} и #{sessionScope}? И так далее. - person BalusC; 30.09.2010

В ICEFaces область запроса распространяется на частичные отправки. Поэтому, если ваше приложение никогда не обновляет всю страницу и использует только частичные отправки, вы можете столкнуться с этим.
Неиспользование частичной отправки в навигации должно решить вашу проблему.

person Adam    schedule 01.10.2010