Przekierowanie Struts2 z przechwytywacza logowania

Nasza aplikacja wymaga, aby użytkownicy byli zalogowani, aby wyświetlić dowolną zawartość. Dostęp do wszystkich stron jest przechwytywany przezLoginInterceptor który wyświetla formularz logowania, jeśli nie ma ważnej sesji dla użytkownika. Chciałbym, aby przechwytywacz zapamiętał oryginalny identyfikator URI żądania przed wyświetleniem formularza logowania i przekierował do niego, jeśli weryfikacja formularza logowania zakończy się powodzeniem. Próbowałem podążaćStruts 2 Przekieruj do poprawnego działania po przechwytywaniu uwierzytelniania.

@Service
@Results({
    @Result(name = "redirect", type = "redirect", location = "${savedUrl}")
})
public class LoginInterceptor extends AbstractInterceptor {
    //...
    private String savedUrl;
    //...
    @Override
    public final String intercept(final ActionInvocation invocation) throws Exception {
       // ...
       savedUrl = (String) session.getAttribute("savedUrl");
       // ...
       if (processLogin(request, session)) { // validate login form
           if (!StringUtils.isEmpty(savedUrl)) {
              return "redirect";
           }
           return LOGIN_SUCCESS_RESULT;
       }
       // if there's no loginData in sesssion, remeber the URI and display a login form
       String queryString = request.getQueryString();
       session.setAttribute("savedUrl", request.getRequestURI() + (queryString==null ? "" : ("?" + queryString)));
       return "login";
    }
    // ...
    public String getSavedUrl(){
       return savedUrl;
    }
}

W wyniku tego otrzymuję pustą stronęreturn "redirect". getSavedUrl() nigdy nie jest nazywany.

Rozwiązanie: zdrapuj adnotację @Results całkowicie i zamiastreturn "redirect"; połączenieresponse.sendRedirect(savedUrl); return null;

questionAnswers(1)

yourAnswerToTheQuestion