Struts2的Convention插件导致”No result defined for action”

Convention插件自动注册Action的功能让我们从struts.xml配置的繁杂工作中解放出来,但有时候也能带来一些麻烦。出现”No result defined for action”错误就是其中之一。

比如我们在struts.xml中定义了一个名为logout的action,…action.LogoutAction是其实现类,这时Convention就会试图帮我们注册一个名叫logout的action,并搜索对应的jsp文件注册为result;如果xml文件和convention搜索出来的action重名,其缺省的原则是覆盖xml文件中的配置,这样我们原来在xml中定义的名为logout的action的result就没有了,于是出现了”No result defined for action”的错误。

在我们不了解这个原则的时候一定很诧异:我明明定义了result,为什么报错说没有呢?其实就是被convention自动覆盖了。当我们知道了这个原则之后,就可以想办法避免了,首先xml定义action名字的时候避免和convention映射生成的action名字重复(需先了解convention的映射原则),convention是机械化的映射,而我们在xml文件中配置的aciton名字是可以根据需要进行修改的;其次如果可以的话,按convention的命名要求定义好jsp文件放到convention的result搜索路径中,这样convention就会自动注册result,不会再出现本文标题所示的错误了。

多说一句,如何查看convention注册的action呢?答案是:struts2-config-browser-plugin,安装很简单,只需要复制到WEB-INF/lib中即可,使用也很简单,访问项目路径的/config-browser/子目录即可,当然了,这个插件并不是为convention设计的,它能显示所有在struts中注册的action,无论是否由convention注册。

该插件的界面下图所示:

访问路径:http://localhost:8080/strut2_HelloWorld/config-browser/index.action

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值