java - Struts 2 中带有 bean 值的自定义日志记录拦截器

标签 java struts2 customization interceptor actioncontext

我正在编写一个用于审计日志目的的自定义拦截器。 我想在拦截器中获取 session 属性和请求属性。

例如:我将设置 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";
}

此请求属性是 ServletRequestAware对象。 但是我无法将该审计 bean 检索到拦截器中,请对此提供帮助。

Map<String, Object> sessionAttributes = invocation.getInvocationContext().getSession();

像这样实现 session 。

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/

相关文章:

java - 模拟 UIInput 类进行测试

java - 在 JSF primefaces 中限制文件上传大小和文件类型

java - Struts 不从参数列表中排除提交操作

django - Django ManyToMany 字段上的自定义列名称

Android Listview 自定义部分标题

java - 如何在 Java 8 的 map 中展平列表

java - IntelliJ : Add a Java SDK using JAVA_HOME variable

jsp - 从网页中隐藏 JSP 扩展

jquery - 从 struts2 操作返回 JSON 消息

java - 我可以定义自定义字符类简写吗?