2015-06-27 4 views
1

Я реализую SessionAware в своем классе действий. Но значение sessionMap всегда равно нулю. Метод setSession, похоже, не называется. Вот код. В методе выполнения sessionMap всегда null.Struts2 SessionMap имеет значение null после реализации интерфейса SessionAware

Что я делаю неправильно?

Действие Класс:

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>  
+0

[Вы ошибаетесь] (http://stackoverflow.com/a/31098434/573032). –

ответ

0

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

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

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

0

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

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

и удалить ниже линии

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