2013-07-28 3 views
0

사용자를 이전 페이지로 깨끗하고 견고하게 리디렉션하는 방법에 대한 아이디어가 있으십니까?ZK - 사용자를 이전 페이지로 리디렉션합니다.

이전 페이지가 앱 자체 내에 있었던 경우에만 리디렉션하는 것에 대해 우려하고 있습니다. 나는 사용자의 세션에서 일종의 DIY 역사를 저장하는 것에 대해 생각해 보았지만 깨끗하고 견고하지는 않습니다. Executions.sendRedirect(url)으로 사용자를 리디렉션 할 수는 있지만 이전 페이지의 URL을 가져 오는 가장 좋은 방법은 아닌지 잘 알고 있습니다.

ZK는 자신의 Browser History Management이지만, 브라우저 리디렉션을 시작하려고 할 때 사용하지 않는 것으로 생각됩니다.

답변

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 코드 주석을 확인하십시오. –

관련 문제