我正在编写用于审计日志目的的自定义拦截器。
我想在拦截器中获取会话属性和请求属性。
例如:我将Username
设置为session,但我也得到了。
但是挑战在于:我将一个bean定义为审计bean,在其中我为bean设置了一些值
if (this.userName.equals("admin")) {
user.setUserName(this.userName);
sessionAttributes.put("USER", user);
auditBean.setPerm("login success");
requestAttributes.put("auditBean", auditBean);
return "success";
} else {
auditBean.setPerm("Login Failed initiaqlized");
requestAttributes.put("auditBean", auditBean);
addActionError(getText("error.login"));
return "error";
}
此请求属性是requestaware obj。
但是此审计bean我无法检索到拦截器中,请对此提供帮助。
Map<String, Object> sessionAttributes = invocation.getInvocationContext().getSession();
完成这样的会议。
Map<String, Object> requestAttributes = invocation.getInvocationContext().getParameters();
以上,我无法检索请求参数。
它显示的是JSP请求参数,但不是我已经设置的。
最佳答案
您可以检查拦截器中的调用上下文是否是您的操作上下文,然后直接从上下文映射中获取它。
Map<String, Object> requestAttributes = (Map<String, Object>) invocation.getInvocationContext().get("request");
或使用其他语法
Map requestAttributes = (Map) ActionContext.getContext().get("request");
关于java - Struts 2中具有bean值的自定义日志记录拦截器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24383711/