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

struts2交给spring管理之后表单提交的字段无法注入
如题。
这是提交页面:

<div align="center" class="register">
<form action="/course/studentRegisterAction" method="post">
<table class="register_table">
<caption>学生注册信息表单</caption>
<tbody>
<tr>
<td>学生学号:</td>
<td><input type="text" name="sid" required="required"/></td>
</tr>
<tr>
<td><button type="submit">提交</button></td>
<td><button type="reset">重置</button></td>
</tr>
</tbody>
</table>
</form>
</div>


下面是struts.xml

<constant name="struts.i18n.encoding" value="UTF-8"/>
  
  <!-- 将struts交给spring进行管理 -->
  <constant name="struts.objectFactory" value="spring"/>  
  
  <constant name="struts.devMode" value="true"/>
  <constant name="struts.serve.static.browserCache" value="false"/>
  <constant name="truts.action.extension" value="action,do"/>
  <constant name="struts.configuration.xml.reload" value="true"/>
  
  <!-- 设置目标缓存文件位置 
  <constant name="struts.multipart.saveDir" value="D:\\temp"/>
-->
  
  <package name="org.course.action" extends="struts-default">
   <action name="studentRegisterAction" class="studentRegisterHandler">
   <result>/index.jsp</result>
   </action>
  </package>

接下来是我的Action

@Transactional
@Controller
public class StudentRegisterHandler extends ActionSupport {

private static final long serialVersionUID = -520L;
private String sid;
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
@Override
public String execute() throws Exception {
System.out.println(getSid());
return SUCCESS;
}
}

运行起来没有报错,就是Action中的sid值为null,struts2没有对sid注入值,如果我struts2不交给spring管理,也就是去掉Action头上的@Controller,以及去掉struts.xml中的<constant name="struts.objectFactory" value="spring"/> 那么就有值。真的不明白是怎么回事。按道理应该整合成功才对啊???
求大神帮忙解决,小弟初学整合ssh,关键代码就是这些了。
感激不尽!感激不尽!

------最佳解决方案--------------------
配置好像没问题;
你这里<form action="/course/studentRegisterAction" method="post">
是不是有问题啊?改成studentRegisterAction试试
------其他解决方案--------------------
@Transactional
@Controller
这个都不用写的,在web.xml中配置好就行了
像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts</filter-name>

<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<!--  <filter-class