【问题标题】:Request scope backing bean... not in request请求范围支持 bean...不在请求中
【发布时间】:2011-04-19 08:14:00
【问题描述】:

我有一个请求范围的支持 bean(比如 MyPageBean),但它似乎在会话中,因为在导航我的应用程序时,当我访问页面 myPage 时,我总是得到相同的实例。 我正在使用 JSF 1.2、IceFaces 1.8.2 和 JBoss 5.1.0

【问题讨论】:

    标签: jsf icefaces


    【解决方案1】:

    不只是您的网络浏览器或代理在积极缓存网页吗?

    创建一个Filter,它在doFilter() 方法中执行以下操作,以指示客户端缓存 HTTP 响应:

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

    并将其映射到web.xml,如下所示:

    <filter>
        <filter-name>cacheFilter</filter-name>
        <filter-class>com.example.CacheFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>cacheFilter</filter-name>
        <servlet-name>facesServlet</servlet-name>
    </filter-mapping>
    

    假设您已将FacesServlet 实例映射到&lt;servlet-name&gt; 上的facesServlet

    【讨论】:

    • 如何确认页面使用的bean确实在请求范围内?您如何确认每次都检索到完全相同的实例?你做了一些穷人的系统输出吗?哪个和在哪里?或者您是否在 bean 的构造函数上运行了带有断点的调试器?你确定#{requestScope}#{sessionScope}了吗?等等。
    【解决方案2】:

    在 ICEFaces 中,请求范围扩展到部分提交。因此,如果您的应用程序从不刷新整个页面,并且只使用部分提交,您可能会遇到这种情况。
    在导航中不使用部分提交应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 1970-01-01
      • 2011-08-15
      • 2011-11-11
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多