我有两个JSF页面,index.xhtml [index]和main.xhtml [main]。在索引上,我有一个dropDown,当我选择并提交时,应用程序在与支持bean交互后导航到main。
问题是这个(给定一个填充'd1','d2'和'd3'的dropDown):
当面向导航回到欢迎索引页面时,我尝试了多种方法来抛弃视图的内容,但它在客户端上闲逛。
清除客户端组件树/视图的最有效方法是什么,这样当用户进出主应用程序页面并选择新数据时,旧数据会被删除?
干杯
答案 0 :(得分:1)
将bean放在请求或视图范围内(因此在会话范围内不),以便JSF将在新请求上创建新bean并指示webbrowser不缓存页面以使其赢得不使用缓存中的旧输入值重新显示页面。
更改bean范围是一项微不足道的任务。禁用JSF请求的浏览器缓存可以通过映射到<servlet-name>facesServlet</servlet-name>
的过滤器类来完成,并且基本上在doFilter()
方法中执行以下操作:
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);