2015-06-27 34 views
1

我在我的action類中實現了SessionAware。但是,sessionMap始終爲空。方法似乎不被調用。 這是代碼。在執行方法中,sessionMap始終爲null實現SessionAware接口後,Struts2 SessionMap爲空

我在做什麼錯?

Action類:

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"/> 

此文件可以覆蓋默認設置,如攔截器堆棧,並且您的應用程序將無法在默認模式下工作。默認情況下,它的配置來填充會話的操作實現SessionAwareServletRequestAwareServletContextAware

0

你可以試試這個讓會話映射

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

,並刪除下面一行

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