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方法。
百度了很久,按照网上的说法把配置改来改去,始终无法解决。
敬请哪位高人解释一下。
10 个解决方案
#1
好像是不能有excute方法在你的action中
#2
后来我把execute方法改成别的名字了还是不行。又按照网上的方法改action的scope属性,还是不执行addBatchStdts方法,也不报错。
#3
你如果自己写了方法就不能写excute方法啦。另起个名字就可以啦!
#4
楼上,我已经把execute方法改名了。
#5
配置文件如下:
<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>
<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>
#6
一、不加method参数的调用非常成功,调用的是execute方法。
二、测试2的方法我也试过,也不行。
我就纳了闷了,为啥我加了method方法就不行了,下午我再把其它相关代码贴出。
#7
Action默认只执行execute函数
要执行多个函数建议换成DispatchAction
要执行多个函数建议换成DispatchAction
#8
刚刚折腾了一个小时,查了一些资料,没有看到这个问题的答案,看资料过程中,我灵机一动,试着把extends ActionSupport去掉,也就是我的Action类不继承任何父类,发觉竟然可以执行不同的method了。现在又出现新的问题,上传文件失败。以前单纯用struts2上传文件一直是成功的,这次加了spring、hibernate不知怎么就失败了。传过来File变量一直为空,正在努力中。
#9
搞定上传文件不成功的问题。原HTML中的FORM代码为:
<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 (?, ?, ?, ?)
继续折腾中。折腾有理,折腾万岁。
<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 (?, ?, ?, ?)
继续折腾中。折腾有理,折腾万岁。
#10
没一个人回个贴?
#1
好像是不能有excute方法在你的action中
#2
后来我把execute方法改成别的名字了还是不行。又按照网上的方法改action的scope属性,还是不执行addBatchStdts方法,也不报错。
#3
你如果自己写了方法就不能写excute方法啦。另起个名字就可以啦!
#4
楼上,我已经把execute方法改名了。
#5
配置文件如下:
<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>
<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>
#6
一、不加method参数的调用非常成功,调用的是execute方法。
二、测试2的方法我也试过,也不行。
我就纳了闷了,为啥我加了method方法就不行了,下午我再把其它相关代码贴出。
#7
Action默认只执行execute函数
要执行多个函数建议换成DispatchAction
要执行多个函数建议换成DispatchAction
#8
刚刚折腾了一个小时,查了一些资料,没有看到这个问题的答案,看资料过程中,我灵机一动,试着把extends ActionSupport去掉,也就是我的Action类不继承任何父类,发觉竟然可以执行不同的method了。现在又出现新的问题,上传文件失败。以前单纯用struts2上传文件一直是成功的,这次加了spring、hibernate不知怎么就失败了。传过来File变量一直为空,正在努力中。
#9
搞定上传文件不成功的问题。原HTML中的FORM代码为:
<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 (?, ?, ?, ?)
继续折腾中。折腾有理,折腾万岁。
<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 (?, ?, ?, ?)
继续折腾中。折腾有理,折腾万岁。
#10
没一个人回个贴?