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
, так далее.