有关result input属性

来源:互联网 发布:相机特效软件 编辑:程序博客网 时间:2024/04/28 20:24

input是struts2里定义好的,什么时候走这个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文件后就可以正常运行了。

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