【发布时间】:2011-04-19 08:14:00
【问题描述】:
我有一个请求范围的支持 bean(比如 MyPageBean),但它似乎在会话中,因为在导航我的应用程序时,当我访问页面 myPage 时,我总是得到相同的实例。 我正在使用 JSF 1.2、IceFaces 1.8.2 和 JBoss 5.1.0
【问题讨论】:
我有一个请求范围的支持 bean(比如 MyPageBean),但它似乎在会话中,因为在导航我的应用程序时,当我访问页面 myPage 时,我总是得到相同的实例。 我正在使用 JSF 1.2、IceFaces 1.8.2 和 JBoss 5.1.0
【问题讨论】:
不只是您的网络浏览器或代理在积极缓存网页吗?
创建一个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。
【讨论】:
#{requestScope} 和#{sessionScope}了吗?等等。
在 ICEFaces 中,请求范围扩展到部分提交。因此,如果您的应用程序从不刷新整个页面,并且只使用部分提交,您可能会遇到这种情况。
在导航中不使用部分提交应该可以解决您的问题。
【讨论】: