【问题标题】:JSF how to force hard reload of current pageJSF如何强制重新加载当前页面
【发布时间】:2011-07-15 03:56:51
【问题描述】:

我使用 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);
}

但是当我这样做时,我的视图的树组件不会重新加载。

所以,我不知道如何重新加载。有人会对如何做到这一点有任何想法吗?

提前感谢您的帮助。

西尔万。

【问题讨论】:

    标签: jsf tree components reload


    【解决方案1】:

    在响应中添加无缓存标头,以便浏览器永远不会缓存页面。您可以使用映射在感兴趣的 url 模式上的 Filter 来执行此操作。例如*.jsf 或只是在FacesServlet。让FilterdoFilter() 方法中设置以下标头:

    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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-11
      • 2019-02-22
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多