Action类如下(摘要):
public class ShowStdtsAction extends ActionSupport {
public String execute() throws Exception {
System.out.println("开始执行stdtSvc.getIndependentStdts()!");
......
return SUCCESS;
} //批量增加学生//
public String addBatchStdts() throws Exception {
System.out.println("开始执行ShowStdtsAction.addBatchStdts()!");
......
return SUCCESS;
} 配置文件如下:
<action name="showStdts" class="showStdtsAction" method="execute">
<result>/stdt/showStdts.jsp</result>
</action>
<action name="addBatchStdts" class="showStdtsAction" method="addBatchStdts">
<result>/stdt/showStdts.jsp</result>
</action> 我的运行环境是struts2+spring2.5+hibernate3.2。 上面的System.out.println()是为了测试加上去的。我发现不论客户端如何发送addBachStdts.action请求,服务器根本不执行方法addBatchStdts。而且execute方法也经常出错。如果我把配置文件改成
<action name="showStdts" class="showStdtsAction">
<result>/stdt/showStdts.jsp</result>
</action>
删掉
<action name="addBatchStdts" class="showStdtsAction" method="addBatchStdts">
<result>/stdt/showStdts.jsp</result>
</action>
部分。则showStdts.action请求执行得非常正常。 按理说一个ACTION类里应该允许不同版本的execute方法。 百度了很久,按照网上的说法把配置改来改去,始终无法解决。敬请哪位高人解释一下。
public class ShowStdtsAction extends ActionSupport {
public String execute() throws Exception {
System.out.println("开始执行stdtSvc.getIndependentStdts()!");
......
return SUCCESS;
} //批量增加学生//
public String addBatchStdts() throws Exception {
System.out.println("开始执行ShowStdtsAction.addBatchStdts()!");
......
return SUCCESS;
} 配置文件如下:
<action name="showStdts" class="showStdtsAction" method="execute">
<result>/stdt/showStdts.jsp</result>
</action>
<action name="addBatchStdts" class="showStdtsAction" method="addBatchStdts">
<result>/stdt/showStdts.jsp</result>
</action> 我的运行环境是struts2+spring2.5+hibernate3.2。 上面的System.out.println()是为了测试加上去的。我发现不论客户端如何发送addBachStdts.action请求,服务器根本不执行方法addBatchStdts。而且execute方法也经常出错。如果我把配置文件改成
<action name="showStdts" class="showStdtsAction">
<result>/stdt/showStdts.jsp</result>
</action>
删掉
<action name="addBatchStdts" class="showStdtsAction" method="addBatchStdts">
<result>/stdt/showStdts.jsp</result>
</action>
部分。则showStdts.action请求执行得非常正常。 按理说一个ACTION类里应该允许不同版本的execute方法。 百度了很久,按照网上的说法把配置改来改去,始终无法解决。敬请哪位高人解释一下。
<action name="showStdts" class="showStdtsAction" >
<result name="success">/stdt/showStdts.jsp </result>
</action>
页面调用
<a href="showStdts.action">测试1</a>
<a href="showStdts!addBatchStdts.action">测试2</a>
一、不加method参数的调用非常成功,调用的是execute方法。
二、测试2的方法我也试过,也不行。我就纳了闷了,为啥我加了method方法就不行了,下午我再把其它相关代码贴出。
要执行多个函数建议换成DispatchAction
<form action="addBatchStdts.action" enctype="multipart/form-data">
<input type="file" name="stdts_xls" accept="*.xls"/>
<input type="submit" name="Submit" value="上传学生名单"/>
</form>
我加了一个method=post搞定:
<form action="addBatchStdts.action" method="post" enctype="multipart/form-data">
<input type="file" name="stdts_xls" accept="*.xls"/>
<input type="submit" name="Submit" value="上传学生名单"/>
</form>
不过我不明白的是,我上面的代码是直接从上的系统COPY过来的,上次没有method=post照样能正常上传文件。现在出现新问题。this.getHibernateTemplate().save(stdt);语句明显执行了insert SQL,但数据库没有新记录。
下面是stdout_20080530.txt日志里的记录:
StdtID:lisi;StdtName:李四;sex:男
Hibernate: insert into STDTS (STDTNAME, SEX, PASSWD, STDTID) values (?, ?, ?, ?)
StdtID:wangwu;StdtName:王五;sex:女
Hibernate: insert into STDTS (STDTNAME, SEX, PASSWD, STDTID) values (?, ?, ?, ?)
StdtID:002;StdtName:人六;sex:女
Hibernate: insert into STDTS (STDTNAME, SEX, PASSWD, STDTID) values (?, ?, ?, ?)继续折腾中。折腾有理,折腾万岁。