2013-07-28 6 views
0

Любые идеи о том, как перенаправить пользователя на предыдущую страницу с чистой и надежной точки зрения?ZK - перенаправить пользователя на предыдущую страницу

Я беспокоюсь только о том, чтобы перенаправить их обратно, если предыдущая страница была в самом приложении. Я думал о сохранении какой-либо истории DIY в сеансе пользователя, но это не выглядит чистым или надежным. Я знаю, что мы можем перенаправить пользователя с Executions.sendRedirect(url), но я не уверен в том, что вы сможете получить URL предыдущей страницы.

У ZK есть свой собственный Browser History Management, но я не думаю, что это полезно при попытке инициировать перенаправление браузера real.

ответ

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 
} 
+0

Можете ли вы объяснить, что здесь происходит? Благодарю. –

+0

@SeanConnolly Пожалуйста, проверьте коды. –

Смежные вопросы