• 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

  • 相关阅读:
    2018.6.8 现代企业管理复习总结
    写时复制
    字符串类示例
    信号量示例
    对象赋值的语义
    对象复制的语义
    无用单元和悬挂引用
    初始化
    静态数据成员,静态成员函数
    同时找出最大数和最小数
  • 原文地址:https://www.cnblogs.com/xmm2017/p/13943861.html
Copyright © 2020-2023  润新知