【问题标题】:SessionMap is null after implementing SessionAware interface in Struts 2在 Struts 2 中实现 SessionAware 接口后 SessionMap 为空
【发布时间】:2015-06-27 23:40:36
【问题描述】:

我在我的动作类中实现SessionAware。但是,sessionMap 始终是nullsetSession 方法似乎没有被调用。 这是代码。在execute方法中,sessionMap总是null

我做错了什么?

动作类:

public class HelloWorldAction extends ActionSupport implements SessionAware
{
    private static final long serialVersionUID = 544659976107736338L;
    private Map<String, Object> sessionMap;
    
    private String name;

       public String execute() throws Exception {
    
           if(sessionMap != null) {
               sessionMap.put("TestID", "Test");
           }
           return "success";
       }
       
       public String getName() {
          return name;
       }

       public void setName(String name) {
          this.name = name;
       }

    @Override
    public void setSession(Map<String, Object> arg0) {
        this.sessionMap = arg0;
    }
    }

struts xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
   "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
   <include file="struts-default.xml"/>
        
 <package name="my-projects" namespace="/" extends="struts-default">

      <action name="hello" 
            class="com.my.projects.actions.HelloWorldAction" 
            method="execute">
            <result name="success">/jsp/HelloWorld.jsp</result>
      </action>      
       

【问题讨论】:

    标签: java struts2 xml-configuration struts2-interceptors


    【解决方案1】:

    你可以试试这个来获取 Session Map

    Map session = ActionContext.getContext().getSession();
    

    并删除下面的行

    <include file="struts-default.xml"/>
    

    【讨论】:

      【解决方案2】:

      struts-default.xml 是 Struts 在其核心库中使用的默认配置文件的名称。您不应将此名称用于自定义配置。

      名为struts-default.xml 的基本配置文件包含在struts2-core.jar 文件中。此文件自动包含在struts.xml 文件中,以提供标准配置设置,而无需复制它们。

      要排除struts-default.xml 或提供您自己的版本,请参阅struts.properties. 中的struts.configuration.files 设置

      从配置中删除这一行:

      <include file="struts-default.xml"/> 
      

      此文件可以覆盖拦截器堆栈等默认设置,您的应用程序将无法在默认模式下运行。

      默认情况下,它配置为将会话填充到实现SessionAware 的操作。

      【讨论】:

        猜你喜欢
        • 2015-11-30
        • 1970-01-01
        • 2013-01-30
        • 1970-01-01
        • 2016-07-05
        • 2011-07-20
        • 1970-01-01
        • 2010-10-19
        • 2013-07-22
        相关资源
        最近更新 更多