2011-05-13 38 views
0

我有两个JSF页面,index.xhtml [index]和main.xhtml [main]。在索引上,我有一个dropDown,当我选择并提交时,应用程序在与辅助bean进行交互之后导航到main。如何刷新JSF视图(Richfaces)

问题是这样的(填充有 'D1', 'D2' 和 'D3' 给出一个下拉):

  • 指数:选择 'D1'
  • 主:示出了具有D1数据页。点击退出。返回索引
  • 索引:刷新主bean数据项。选择“D2”
  • 主:由于在辅助bean错误,所示的主页,但仍与本

我已经尝试了许多方法来沟视图的内容时面D1数据返回到欢迎索引页面,但它在客户端一直悬而未决。

什么是清除客户端组件树/视图的最有效方式,因此当用户进出主应用程序页面并选择新数据时,旧数据将被丢弃?

干杯

回答

1

把豆中(在会话范围从而)请求或视图范围,使JSF将创建新的请求,新豆,并指示web浏览器不缓存页面,使其将不会使用缓存中的旧输入值重新显示页面。

更改bean范围是一件小事。

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); 
:禁止用于JSF请求浏览器的缓存可以通过其被映射上 <servlet-name>facesServlet</servlet-name>和基本上没有下文中 doFilter()方法的过滤器类来完成