用的是 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"就好吧?