【问题标题】:How to refresh JSF view (Richfaces)如何刷新 JSF 视图(Richfaces)
【发布时间】:2011-05-13 16:34:47
【问题描述】:

我有两个 JSF 页面,index.xhtml [index] 和 main.xhtml [main]。在索引上,我有一个下拉菜单,当我选择并提交时,应用程序在与支持 bean 交互后导航到 main。

问题是这样的(给定一个填充了“d1”、“d2”和“d3”的下拉菜单):

  • 索引:选择“d1”
  • main:显示带有 d1 数据的页面。点击退出。返回索引
  • 索引:主 bean 数据项已刷新。选择“d2”
  • main:由于 backing bean 中的错误,显示了主页面,但仍然存在 d1 数据

当面孔导航回欢迎索引页面时,我尝试了多种方法来放弃视图的内容,但它在客户端徘徊。

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

干杯

【问题讨论】:

    标签: jsf


    【解决方案1】:

    将 bean 放入请求或视图范围内(因此 不在会话范围内),以便 JSF 将在新请求上创建新 bean 并指示 Web 浏览器不缓存页面以使其获胜'不使用缓存中的旧输入值重新显示页面。

    更改 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);
    

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多