Struts2 忽略 applicationContext 中的 Action class 值属性
Struts2 ignoring Action class value properties from applicationContext
我不确定为什么 Struts 没有为操作 class 设置在 applicationContext.xml
中定义的简单字符串 属性。它正在设置一个参考,但不是 String
值 属性。就好像 Struts 忽略了这些属性,因为我尝试了这样的事情
<property name="IDontExistInActionClass" value="MyValue" />
和 Struts 在实例化 Action class 时不会抱怨,因为 setter 不存在。但是 userBO
引用实际上是在 Action class 中设置的,所以这很奇怪。
也许我在做一些愚蠢的事情,所以我很感激第二双眼睛。
只是提一下,这适用于未实现 SessionAware
接口的 Action classes。
applicationContext.xml
:
<bean id="loginAction" class="LoginAction" scope="prototype">
<property name="test" value="testing" />
<property name="userBO" ref="userBO" />
</bean>
Struts.xml
:
<package name="user" namespace="/user" extends="struts-default">
<action name="login"
class="LoginAction">
<result name="success">/WEB-INF/jsp/loginmain.jsp</result>
</action>
</package>
动作Class:
public class LoginAction extends ActionSupport implements SessionAware {
private Map<String,Object> session;
private UserBO userBO;
private String test;
@Override
public String execute() throws Exception{
return "success";
}
//~Accessors
@Override
public void setSession(Map<String, Object> sMap) {
this.session = sMap;
}
public void setUserBO(UserBO userBO) {
this.userBO = userBO;
}
public void setTest(String value) {
this.test = value;
}
}
在 class 属性中,您应该使用 applicationContext.xml
中的 bean id。
<package name="user" namespace="/user" extends="struts-default">
<action name="login" class="loginAction">
<result name="success">/WEB-INF/jsp/loginmain.jsp</result>
</action>
</package>
我不确定为什么 Struts 没有为操作 class 设置在 applicationContext.xml
中定义的简单字符串 属性。它正在设置一个参考,但不是 String
值 属性。就好像 Struts 忽略了这些属性,因为我尝试了这样的事情
<property name="IDontExistInActionClass" value="MyValue" />
和 Struts 在实例化 Action class 时不会抱怨,因为 setter 不存在。但是 userBO
引用实际上是在 Action class 中设置的,所以这很奇怪。
也许我在做一些愚蠢的事情,所以我很感激第二双眼睛。
只是提一下,这适用于未实现 SessionAware
接口的 Action classes。
applicationContext.xml
:
<bean id="loginAction" class="LoginAction" scope="prototype">
<property name="test" value="testing" />
<property name="userBO" ref="userBO" />
</bean>
Struts.xml
:
<package name="user" namespace="/user" extends="struts-default">
<action name="login"
class="LoginAction">
<result name="success">/WEB-INF/jsp/loginmain.jsp</result>
</action>
</package>
动作Class:
public class LoginAction extends ActionSupport implements SessionAware {
private Map<String,Object> session;
private UserBO userBO;
private String test;
@Override
public String execute() throws Exception{
return "success";
}
//~Accessors
@Override
public void setSession(Map<String, Object> sMap) {
this.session = sMap;
}
public void setUserBO(UserBO userBO) {
this.userBO = userBO;
}
public void setTest(String value) {
this.test = value;
}
}
在 class 属性中,您应该使用 applicationContext.xml
中的 bean id。
<package name="user" namespace="/user" extends="struts-default">
<action name="login" class="loginAction">
<result name="success">/WEB-INF/jsp/loginmain.jsp</result>
</action>
</package>