Struts 2 – 在身份validation拦截器之后重定向到正确的操作

我在网上找不到任何东西所以我会问这里。 我正在使用strut2并且我有一个私有的操作包,因为某些操作需要登录才能访问。 所以我在我的安全包中有这个:

         dologin  html/error/hibernate_session.jsp  html/error/hibernate_session.jsp  

当然还有其他动作定义。

我的问题如下:

假设用户想要访问他的个人区域。 他点击了personalArea链接,他将自动重定向到登录页面(因为personalArea是一个安全的动作)。 我想要的是:登录后用户自动重定向(继续操作)到personalArea而不是主页。

所以,我想要的是:当用户因安全动作登录系统时,登录后执行动作(安全)继续。

我怎样才能做到这一点?

一种可能的解决方案是跟踪用户拦截其URL。 您可以在身份validation拦截器中执行此操作。

 String queryString = request.getQueryString(); session.put("savedUrl", request.getRequestURI()+(queryString==null?"":("?"+queryString))); 

使用动态参数的全局结果

 @Results({ @Result(name = "return", type = "redirect", location = "${savedUrl}") }) 

登录后,检查savedUrl的会话并返回结果"return" 。 假设为动态参数提供getter。

最后,我能够使它工作。 基本上我从Roman C.提出的解决方案中遗漏的是我需要保存一个类变量(因此不仅仅在会话中有它)。

private String savedUrl;

 public String getSavedUrl(){ return savedUrl; } 

这就是诀窍。

谢谢