日期:2014-05-17  浏览次数:20618 次

spring 注入不了的问题
用的是 struts2.3.1 + spring3.0.5
先是
login.jsp

<script type="text/javascript">
$().ready(function(){
$("#sub").click(function(){
$("#teacherRegist").submit();
})
});
</script>
<title></title>
</head>
<body>
<s:form id="teacherRegist" method="post" action="login!login">
<input type="text" name="userinfo.username"/>
<input type="password" name="userinfo.password"/>
<input type="button" value="queren" id="sub"/>
</s:form>


struts.xml对ACTION的配置

<action name="login" class="cn.dota.klaus.loginAction">
<result name="success">
/login.jsp
</result>
</action>


web.xml的配置

<!-- 读取applicationContext.xml -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


applicationContext.xml的配置

<bean id="loginAction" class="cn.dota.klaus.loginAction">
 <property name="message"> 
                     <value>123456</value> 
         </property> 
</bean>


loginAction.java 的代码

public class loginAction extends ActionSupport {
private String message;

public void setMessage(String message) {
this.message = message;
}

        public String login(){
        System.out.println(this.message);
return "success";
}

}



问题是: message打印出来一直为空。
可以确定的是:
1.applicationContext.xml是加载了的
2.在web启动的时候debug进入loginAction.java 中的public void setMessage(String message) 中message是有值的 为123456(说明有注入进去),但是页面点击调用action的login方法时时message打印为空
3.在使用

Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);

这种方法是可以取到message的值的,不理解。话说这不是单例的吗?

------解决方案--------------------
action不能用全名了  要用spring配的那个ID
------解决方案--------------------
<action name="login" class="cn.dota.klaus.loginAction">
           &