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方法。 百度了很久,按照网上的说法把配置改来改去,始终无法解决。敬请哪位高人解释一下。 

解决方案 »

  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>
      

  6.   


    一、不加method参数的调用非常成功,调用的是execute方法。
    二、测试2的方法我也试过,也不行。我就纳了闷了,为啥我加了method方法就不行了,下午我再把其它相关代码贴出。
      

  7.   

    Action默认只执行execute函数
    要执行多个函数建议换成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 (?, ?, ?, ?)继续折腾中。折腾有理,折腾万岁。