Struts2 action execute 不执行

注意:本文并非validate()方法执行后不执行execute();

跟踪断点发现execute没有执行,于是纳闷了,因为struts2 默认的执行方法就是execute啊,而且其他action 都是这样的,原来是可以执行的,但现在执行不了了,对比新旧文件发现,在同一个包(package)下,不能同时使用默认execute和显示声明method="XX"的方式。

如果要同时使用,就另外声明一个包,这个我看的讲struts2的书里好像关于这个包的讲的很少,这也是我通过实际例子遇到错误总结出来的,具体原理有兴趣的自己去看源码研究了。

示例:
<!-- Javascript generate -->
<package name="javascript" extends="struts-default">
<action name="genJs" class="GenJS">
<result name="chat" type="freemarker">
/WEB-INF/templates/script/placii.chat.ftl
</result>
<result name="file" type="freemarker">
/WEB-INF/templates/script/placii.file.ftl
</result>
<result name="meeting" type="freemarker">
/WEB-INF/templates/script/placii.meeting.ftl
</result>
</action>
</package>

<package name="pagesoffice" extends="struts-default">
<action name="recentoffices" class="OfficeAction" method="findPagesOfficeRecentlyAdded">
<result name="success" type="freemarker">
/WEB-INF/templates/recentoffices.ftl
</result>
</action>
<action name="recentupdateoffices" class="OfficeAction" method="findPagesOfficeRecentlyUpdated">
<result name="success" type="freemarker">
/WEB-INF/templates/recentoffices.ftl
</result>
</action>
</package>


两个package中,第一个package默认使用execute方法,第二个package中,由于同一action类里有多个可执行方法,古显示声明method.

如果你将这两个包合并为一个包,即会发现默认的execute方法的action是不会执行execute的,但是action会执行,比如断点跟踪发现setXX()的方法是执行了的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值