我添加了Struts2拦截器,在那里我想更改调用动作,如果某些逻辑触发。目前,我可以在调用操作后更改重定向JSP文件。但是我需要在调用动作之前更改调用动作。有什么办法可以调用不同的动作吗?Struts2拦截器更改操作
谢谢。
我添加了Struts2拦截器,在那里我想更改调用动作,如果某些逻辑触发。目前,我可以在调用操作后更改重定向JSP文件。但是我需要在调用动作之前更改调用动作。有什么办法可以调用不同的动作吗?Struts2拦截器更改操作
谢谢。
你的拦截方法,按您的意见将是这个样子:
public String intercept(ActionInvocation actionInvocation) throws Exception {
final ActionContext actionContext = ActionContext.getContext();
final HttpServletRequest httpServletRequest = (HttpServletRequest) actionContext.get(HTTP_REQUEST);
HttpSession httpSession = httpServletRequest.getSession(false);
UserObject userObject = session.getAttribute("User"); //Check for user information, this is just a dummy
if(isSpecificUser(userObject)){
return "SpecificAction";
}
return actionInvocation.invoke();
}
SpecificAction
应该出现在您的配置文件。
您可以返回任何想要的结果,包括映射到某个操作的全局结果。改变行动调用本身,不太确定 - 我也不相信这是必要的。 –
根据我的理解,您正在尝试确定在您的自定义拦截器中要调用哪个动作如果是这样您不能这样做。你的实际需求是什么? –
您的问题还不够清楚,但您仍然可以按照Dave的建议从拦截器返回结果字符串,并且可以使用该结果字符串来控制应用程序的流程 –