我正在编写用于审计日志目的的自定义拦截器。
我想在拦截器中获取会话属性和请求属性。
例如:我将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/

10-15 11:24