sturts学习系列:DispatchAction的execute()方法引发的莫名错误

今天重构一个以前的项目,发现有的地方用DispatchAction来Control可以减少很多的Action。于是便开发工作,把众多的同类的Action合并到一个DispatchAction中。

不一会儿工夫,第一个DispatchAction就诞生了。于是启动服务器,赶紧测试一下。意外的事情发生了。不管怎么样总是转到一个空白的页面,而且也没有报错。究竟是怎么回事呢?如果是路径的问题,那肯定会报404错误啊!但是现在是可以找到这个Aciton的,但是好像就是不进行任何的处理。

经过一阵跟踪调试,发现原来系统中所有的Aciton都是来自一个自定义基类BaseAction,所有的DispatchAction都来自一个自定义基类BaseDispatchAction。而在这两个基类中都有对execute()方法的默认实现(覆盖了struts的Action,DispatchAction的execute()实现)。当然这对于基本的Action并没有什么影响,因为我们在实现的时候都会提供一个我们自己的execute()实现来覆盖掉父类的execute()。但是对于DispatchAction可就不是那么回事了。因为我们在实现自己的DispatchAction的时候通常是不会写execute()方法的,而是继承父类Dispatchaction的execute()方法。而这个父类的方法就是Action的入口,通过它来调用不同的实现方法从而实现一个Aciton处理多个事件。如果我们覆盖了这个方法,而且没有任何自己的实现的话,那么就会出现前面提到的问题,莫名其妙的出现一个空白页面。

DispatchAction也是一个Action,他的入口同样是execute(),如果我们自己覆盖了DispatchAction的这个方法就需要有自己的相应的实现,否则你会得到莫名其妙的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值