noresultdefinedforaction详解

发布时间:2023-05-18

在开发中,noresultdefinedforaction是一个很常见的错误,它是指一个action没有返回任何结果。在本文中,我们将从多个方面来详细阐述noresultdefinedforaction错误,包括产生原因、解决方法以及避免方法等。

一、错误产生原因

noresultdefinedforaction错误产生的原因可以从多个方面来考虑:

  1. action未设置返回结果: 若一个action未设置返回结果,则在执行时会抛出noresultdefinedforaction错误。在编写action时,应该设置好它的返回值类型,防止此类错误的出现。
    public class ExampleAction extends ActionSupport{
       public String execute(){
           //执行业务逻辑
           return SUCCESS;  //返回成功状态
       }
    }
    
  2. struts.xml未配置返回结果: 若struts.xml文件未配置对应的返回结果,则遇到此action时就会抛出noresultdefinedforaction错误。在进行配置时,应该确认每个action都有对应的返回结果。
    <action name="exampleAction" class="ExampleAction">
       <result name="success">/index.jsp
       </result>
        <!--未配置failure和error结果-->
    </action>
    
  3. 返回结果名称与配置不一致: 若action返回了结果,但是返回结果名称与在struts.xml文件中配置的名称不一致,也会导致noresultdefinedforaction错误的出现。
    <action name="exampleAction" class="ExampleAction">
       <result name="success">/success.jsp
       </result>
    </action>
    <!--struts.xml中应该是 <result name="success">/success.jsp</result>-->
    

二、解决方法

针对noresultdefinedforaction错误,我们可以从以下几个方面来解决:

  1. 设置返回结果: 在编写action时,应该设置好它的返回值类型,防止此类错误的出现。
    public class ExampleAction extends ActionSupport{
       public String execute(){
           //执行业务逻辑
           return SUCCESS;  //返回成功状态
       }
    }
    
  2. 配置返回结果: 在进行配置时,应该确认每个action都有对应的返回结果。
    <action name="exampleAction" class="ExampleAction">
       <result name="success">/index.jsp
       </result>
       <result name="failure">/failure.jsp
       </result>
       <result name="error">/error.jsp
       </result>
    </action>
    
  3. 检查返回结果名称: 确认action返回的结果名称是否与在struts.xml文件中配置的名称一致。
    <action name="exampleAction" class="ExampleAction">
       <result name="success">/success.jsp
       </result>
    </action>
    <!--配置应该是 <result name="success">/success.jsp</result>-->
    

三、避免方法

noresultdefinedforaction错误的发生是因为返回结果未配置或者配置错误。为了避免此类错误的发生,在进行开发时,应该养成以下习惯:

  1. 在编写action时,应该设置好它的返回值类型,并对返回值进行定义
    public class ExampleAction extends ActionSupport{
       public String execute(){
           //执行业务逻辑
           return SUCCESS;  //返回成功状态
       }
    }
    
  2. 在进行配置时,应该确认每个action都有对应的返回结果,并对返回结果进行正确的命名
    <action name="exampleAction" class="ExampleAction">
       <result name="success">/index.jsp
       </result>
       <result name="failure">/failure.jsp
       </result>
       <result name="error">/error.jsp
       </result>
    </action>
    
  3. 在项目开发初期,应该进行代码审核,确保每个action都有对应的返回结果,并且返回结果的命名与配置一致

四、小结

noresultdefinedforaction错误常常出现,但是只要在编写代码、配置参数时细心一些,就可以很好地避免此类错误的发生。通过本文的介绍,相信大家对noresultdefinedforaction错误有了更全面、更深入的了解。