ZK - 将用户重定向回上一页

时间:2013-07-28 14:27:05

标签: java redirect navigation zk

关于如何干净利落地将用户重定向回上一页的任何想法?

如果上一页在应用程序本身内,我只关心重定向它们。我曾想过在用户的Session中存储某种DIY历史,但这看起来并不干净或不健全。我知道我们可以使用Executions.sendRedirect(url)重定向用户,但我不确定获取上一页网址的最佳方式。

ZK拥有自己的Browser History Management,但在尝试启动真正的浏览器重定向时,我认为不会有用。

1 个答案:

答案 0 :(得分:2)

试试这个:

// check if request needs to be sent back
if (!isValidRequest()) {

  // get the current execution context
  Execution exec = Executions.getCurrent();

  // retrieve HTTP request, response objects
  HttpServletRequest request = (HttpServletRequest) exec.getNativeRequest();
  HttpServletResponse response = (HttpServletResponse) exec.getNativeResponse();

  // get the referring URL from HTTP header
  String referrer = request.getHeader("Referer");

  /* don't need to use this unless doing a forward (server-side)

  if (referrer != null) {
    URL ref = new URL(referrer);
    referrer = ref.getPath().substring(request.getContextPath().length());
  } else {
    referrer = "/index.jsp"; // home page
  }
  */

  // HTTP 301 redirect (client-side); encoding ensures URL rewriting if required
  response.sendRedirect(response.encodeRedirectURL(referrer));

  exec.setVoided(true); // no need to create UI; about to redirect
}