读书人

spring 注入不了的有关问题

发布时间: 2013-11-29 00:21:24 作者: rapoo

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">
<result name="success">
/login.jsp
</result>
</action>


这个class不是用spring里面bean的id 就可以了么,应该是 class="loginAction"就好吧?

读书人网 >Java Web开发

热点推荐