jsf viewexpiredexception faces-redirect无法正常工作

时间:2012-02-24 23:57:20

标签: jsf caching redirect filter viewexpiredexception

我有一个过滤器,如果会话已过期且方法是POST,则将faces-redirect参数添加到url并使browswer不缓存页面,以避免viewExpiredException,但不工作,我仍然得到那个例外。

这是我的代码:

                if ( "POST".equalsIgnoreCase(request.getMethod()) ) {
                        log.info("POST --> Evitar ViewExpiredException de JSF");
                        log.info("Hacer que el navegador no cachee la página");
                        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.
                        log.info("Redirigir a la página con el parámetro 'faces-redirect'");
                        String pagRedirect = anadirFacesRedirect(pagSolicitada);
                        log.info("Página con 'faces-redirect' = "+pagRedirect);
                        log.info("URI con 'faces-redirect' = "+request.getContextPath()+pagRedirect);
                        response.sendRedirect(request.getContextPath()+pagRedirect);
                        chain.doFilter(request, response);
                        return;
                }

“anadirFacesRedirect”方法添加“faces-redirect = true”。它运行正常,我已经调试并看到了日志和sendRedirect参数都没问题。

我将此代码放在Spring Security过滤器中。

我不知道这是不是问题(因为Spring Security),或者代码中有什么问题?

谢谢。

更新 我已经检查过它不是一个Spring Security问题,因为我把它放在一个在Spring Security过滤链之后可以使用的webfilter中,但它仍然不起作用,它会抛出viewExpiredException。

这是为什么?我强制重定向并让浏览器不使用缓存页面。

0 个答案:

没有答案