Struts2忽略applicationContext中的Action类值属性

时间:2015-03-07 20:13:45

标签: java struts2

我不确定为什么Struts没有在applicationContext.xml中为Action类设置一个简单的String属性。它正在设置引用但不是String值属性。好像Struts忽略了这些属性,因为我尝试了类似这样的东西

<property name="IDontExistInActionClass" value="MyValue" /> 

和Struts在实例化Action类时没有抱怨,因为setter不存在。但是userBO引用实际上是在Action类中设置的,所以它很奇怪。 也许我做了一些愚蠢的事情,所以我很欣赏第二双眼睛。

请注意,这适用于未实现SessionAware接口的Action类。

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>

行动类:

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;
    }   
}

1 个答案:

答案 0 :(得分:0)

在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>
相关问题