Struts2 SessionMap является нулевым после реализации интерфейса SessionAware

Я реализую SessionAware в моем классе действий. Но sessionMap всегда ноль. setSession метод, кажется, не вызывается. Вот код В методе 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;
    }
    }

распорки 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>      

2 ответа

Вы можете попробовать это, чтобы получить карту сеанса

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

и удалите нижнюю строку

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

struts-default.xml имя файла конфигурации по умолчанию, используемого Struts в его основной библиотеке. Вы не должны использовать это имя в своих пользовательских конфигурациях. Удалить

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

Этот файл может переопределить настройки по умолчанию, такие как стек перехватчиков, и ваше приложение не будет работать в режиме по умолчанию. По умолчанию он настроен на заполнение сеанса действиями, которые реализуют SessionAware, ServletRequestAware, ServletContextAware, так далее.

Другие вопросы по тегам