当会话无效时,重定向不起作用

时间:2016-10-10 14:33:01

标签: jsf redirect filter

在我的WebFilter中使用以下代码:

:not(:first-of-type)

背后的想法如下: 用户第一次调用url时,他将被重定向到login.xhtml。这很好用。经过一段时间(在web.xml中定义)后,会话无效。

过滤器识别尝试重定向到“sessionExpiredPage”的无效会话。但它不会重定向,而是显示当前页面。

所以,我的代码有什么问题,我在哪里有错误?

1 个答案:

答案 0 :(得分:0)

这是我对所有感兴趣的人的问题的答案。 问题是当然是ajax请求,解决方案很简单:

我只需要检查它是否是Ajax请求,如:

final String facesRequest = request.getHeader("Faces-Request");
if (facesRequest != null && facesRequest.equals("partial/ajax")) {
    //it is
}

然后返回以下xml部分:

final StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><partial-response><redirect url=\"").append(req.getContextPath() + sessionExpiredPage).append("\"></redirect></partial-response>");
                res.setHeader("Cache-Control", "no-cache");
                res.setCharacterEncoding("UTF-8");
                res.setContentType("text/xml");
                final PrintWriter writer = res.getWriter();
                writer.println(sb.toString());
                eriter.flush();

多数民众赞成,它就像一个魅力。