在我的WebFilter中使用以下代码:
:not(:first-of-type)
背后的想法如下: 用户第一次调用url时,他将被重定向到login.xhtml。这很好用。经过一段时间(在web.xml中定义)后,会话无效。
过滤器识别尝试重定向到“sessionExpiredPage”的无效会话。但它不会重定向,而是显示当前页面。
所以,我的代码有什么问题,我在哪里有错误?
答案 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();
多数民众赞成,它就像一个魅力。