struts2 拦截器报错:No result defined for action xxx.action and result input

产生这个错误的原因:前台表单提交的参数与后台action中的属性不匹配。
具体有以下几点:

1、validate方法没有通过(表单验证看看有没有重名、前后端属性类型是否一致,以及前端传的值是否符合后端属性的类型);
2、页面元素中有重命名时,但后台action类的对应的接收此同名参数的是变量而没有写成数组
3、页面中用到的控件名称与后台Action中的属性名称不一致
4、配置文件中result 返回.jsp出现错误(多了空格、或者没有界面)
5、对应Action中没有返回值,或者返回值数据类型转换出错
6、工程里有一个BaseAction的类,并且BaseAction使用了验证框架,有一个BaseAction-validation.xml的文件。
而PoiterAction正好是BaseAction的一个子类,也继承了父类的验证框架,因此按照验证框架的运行流程来看这个问题就很明显了。由于验证框架在调用子类的时候首先加载父类的验证规则,然后等待输入,系统会找到input元素制定的JSP文件的输入信息,但是PoiterAction并没有input项,所以系统抛出No result defined for action…and result input。
7、表单中有文件上传功能,提交form表单时,需要加enctype = “multipart/form-data”
比如<form action="xxxx.action" method="post" name="xxx" id="xxx" enctype = "multipart/form-data">
如果不加enctype = "multipart/form-data"这个,在不同浏览器版本中,比如谷歌 52版本,不加也不会报错,但在58版本就报错了。所以避免浏览器兼容问题,最好加上!

为了不让错误信息显示到客户端,可以在action中配置一个name为input的结果视图:

<result name="input">/error.jsp</result>
在对应的结构视图error.jsp页面中配置两个标签。
<s:fielderror/><s:actionerror/> 

 

参考博文:https://blog.csdn.net/lv_hang515888/article/details/73456789

posted @ 2020-08-18 20:07  芃蓉蓁蓁  阅读(164)  评论(0编辑  收藏  举报