我使用JSF 1.2。我有一个视图,其中我有一个h:commandButton,其操作如下:
#{myBean.saveSomeData}
当我点击按钮时,我想保存一些数据,就像保存的数据可以改变我的视图显示一样,我想强制重新加载(比如我的浏览器中的CTRL + F5)我的页面。
为此,我想到了这段代码:
public void saveSomeData() {
... Save some data ...
FacesContext context = FacesContext.getCurrentInstance();
String viewId = context.getViewRoot().getViewId();
ViewHandler handler = context.getApplication().getViewHandler();
UIViewRoot root = handler.createView(context, viewId);
root.setViewId(viewId);
context.setViewRoot(root);
}
但是当我这样做时,我的视图的树组件不会重新加载。
所以,我不知道如何重新加载。有人会对这样做的方法有所了解吗?
感谢您的帮助。
西尔。
答案 0 :(得分:1)
向响应添加no-cache标头,以便浏览器永远不会缓存页面。您可以使用映射在感兴趣的url模式上的Filter
来执行此操作。例如*.jsf
或仅FacesServlet
。让Filter
在doFilter()
方法中设置以下标题:
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.