struts2的那些事儿--No result defined for action.....and result input

在最近的strut2练习中遇到了一个非常隐蔽的问题,这个问题几乎花了我一天的时间。问题&解决方法如下:(project中的一部分代码)
    创建了一个用于跳转的PoiterAction,代码再简单不过了,只有一个返回SUCCESS字符串的execute方法。
    在struts.xml配置文件中配置了和SUCCESS对应的实体页面
    <result name="success">xxxxx.jsp</result>
    然后运行应用的时候调用该action时出现了  No result defined for action.....and result input 的错误。这个错误是没有在配置文件中给action添加所需要的
<result name="input">xxxxx.jsp</result>元素。
    这就觉得奇怪了!我并没有任何数据需要提交到该action中啊。
    最后做了很多的测试。原因是工程里有一个BaseAction的类,并且BaseAction使用了验证框架,有一个BaseAction-validation.xml的文件。
    而PoiterAction正好是BaseAction的一个子类,也继承了父类的验证框架,因此按照验证框架的运行流程来看这个问题就很明显了。由于验证框架在调用子类的时候首先加载父类的验证规则,然后等待输入,系统会找到input元素制定的JSP文件的输入信息,但是PoiterAction并没有input项,所以系统抛出 No result defined for action.....and result input。
    删除了 BaseAction-validation.xml文件后就可以正常运行了。

    结论:在开发的时候应该尽量不对基类做任何验证,虽然使用继承基类的验证框架可以减少工作量,但是有时会出现不必要的麻烦。应该对具体类实施验证。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值