Jsf 2 如何避免在点击按钮或链接时页面过期。当我为表单上的任何按钮单击或链接返回null时,页面将过期
我使用的过滤器,检查用户是否登录,然后不缓存上一页。代码是这样的Jsf 2 如何避免在点击按钮或链接时页面过期。当我为表单上的任何按钮单击或链接返回null时,页面将过期,jsf-2,Jsf 2,我使用的过滤器,检查用户是否登录,然后不缓存上一页。代码是这样的 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { .... if (isRegisteredUser.equalsIgnoreCase(("1"))) { sess
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
....
if (isRegisteredUser.equalsIgnoreCase(("1"))) {
sessionID = UUID.randomUUID().toString();
session.setMaxInactiveInterval(1800);
Cookie userCookie = new Cookie("userCookie", "loginUser");
userCookie.setPath("/");
httpServletResponse.addCookie(userCookie);
Cookie sessionCookie = new Cookie("WITSessionCookie", sessionID);
sessionCookie.setMaxAge(60*30);
sessionCookie.setPath("/");
httpServletResponse.addCookie(sessionCookie);
if (!httpServletRequest.getRequestURI().startsWith(httpServletRequest.getContextPath() + ResourceHandler.RESOURCE_IDENTIFIER)) { // Skip JSF resources (CSS/JS/Images/etc)
httpServletResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpServletResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpServletResponse.setDateHeader("Expires", 0); // Proxies.
}
filterChain.doFilter(httpServletRequest, httpServletResponse);
}
...
} //end of doFilter()
但问题是,如果用户在任何页面上单击任何按钮或链接,我为该操作返回null,然后单击浏览器后退按钮,则表示页面过期。我怎样才能防止这种情况?很好,页面没有缓存,但是为什么当我单击任何按钮或链接并为该操作返回null时,页面将过期?
谢谢,当最终用户试图重新发送未缓存在浏览器中的POST请求时,这是正常的和指定的行为。您需要实现post-redirect-get模式。将重定向发送到操作方法中的目标页面。或者,更好的做法是将其改为ajax提交。顺便说一句,不管您是否通过返回null返回到同一视图。您的会话和cookie处理非常奇怪。你似乎错过了一些基本的概念……:你说的基本概念是什么意思?你能告诉我基本概念吗?是的,你是对的。事实上我只是从章节中读到的。但这是针对servlet和JSP的。现在我正在使用JSF。显然,会话跟踪是相同的,但我缺乏概念。如何实现后重定向get模式?因此,如果我的操作返回null,则页面不会过期。是的,我回到了同样的观点。假设我有一个faq.xhtml页面。因此,我检查验证,如果任何验证失败,那么我返回null.HHmm您的意思是说,我重定向用户,而不是返回null。我应该使用类似于return MyDashboard?faces redirect=true的内容,而不是使用return null。它是?这是重定向到同一页…谢谢。是的,你是对的。我没有返回null,而是使用了如下内容//returnnull;return news和announceaddupdate?faces redirect=true;i、 e,重定向到同一页。现在,当我点击后退按钮时,pageExpires消息消失了。谢谢: