【问题标题】:No result defined for action and result input没有为动作和结果输入定义结果
【发布时间】:2011-04-21 09:41:36
【问题描述】:

我正在使用 Struts2

我收到错误,因为没有为操作和结果输入定义结果

<action name="update" method="updatePhase" class="Project">
   <result name="updated">/Project.jsp</result>
</action>

我的操作没有传递给我的 java 类。

谁能帮帮我?

【问题讨论】:

    标签: struts2


    【解决方案1】:

    错误消息表示尚未为您的操作定义名为 input 的结果。结果input 是Struts 在验证传递给动作的参数时返回的默认结果。因此,我建议检查并确保您从 HTML 表单传递的参数与您的操作参数匹配。检查拼写、数据类型等。

    【讨论】:

    • 另外,请确保您没有多次定义具有相同 id 的输入
    【解决方案2】:

    我遇到了同样的错误,我更改了我的 struts.xml 文件

    from
    <action name="Registeration101" class="Registeration101">
            <result name="success">pages/inputform.jsp</result>
            <result name="done">pages/quoteSuccess.jsp</result>
        </action>
     to
        <action name="Registeration101" class="Registeration101">
            <result name="success">pages/inputform.jsp</result>
            <result name="input">pages/inputform.jsp</result>
            <result name="done">pages/quoteSuccess.jsp</result>
        </action>
    

    基本上结果 name="input" 没有定义

    【讨论】:

      【解决方案3】:

      假设你来自 x.jsp。

      有时当您在 bean 类中放置验证注释时,您在 Action 中使用并且不提供 x.jsp ,抛出异常。

      如果您不想验证输入,只需从 bean 类中删除验证注释即可。

      【讨论】:

        【解决方案4】:

        一种解决方案是为操作指定名称为“输入”的结果。这就是我通过注释解决问题的方法。

        之前:

        @Action(value = "sendFeedback", results = {
            @Result(name = SUCCESS,type = "json"),
            @Result(name = ERROR,type = "json")})
        

        之后:

        @Action(value = "sendFeedback", results = {
            @Result(name = SUCCESS,type = "json"),
            @Result(name = INPUT, type = "json"),
            @Result(name = ERROR,type = "json")})
        

        【讨论】:

          【解决方案5】:

          简单的答案 - 当您提供错误的输入时会发生。 例如 - 如果您有一个名为“firstName”且类型为 char 的字段,并且您提供了错误的输入(例如,int)

          【讨论】:

            【解决方案6】:

            最常见的情况是约定插件的存在。寻找其中带有“约定”的任何内容并将其删除。稍后将有更详细的说明。

            【讨论】:

            • 期待更详细的描述。
            【解决方案7】:
            <action name="update" method="updatePhase" class="Project">
               <result name="updated">/Project.jsp</result>
               <result name="input">/Project.jsp</result> <!-- add input return type as well in your struts.xml -->
            </action>
            

            通常,如果一切顺利,控制器中的 execute()/updatePhase() 会返回更新。 但是还有其他返回类型需要 struts 处理。

            您可以通过挑战您的返回值和相应的来手动处理它

            <result name="yourReturnValue">/Project.jsp</result> 
            

            对应标签内。

            希望现在很清楚。

            【讨论】:

              【解决方案8】:

              如果您在类文件中重写了 validate 方法(在您的情况下为 class="project"),那么它需要您在 validate 方法中使用的必要输入值。 您可以在 validate 方法中传递必要的值或更改一些验证。

              【讨论】:

                【解决方案9】:

                Actionstruts.xml 中的 Result 名称应该相同。不过,如果您收到此错误,则可能是 jar 文件问题。尝试将此 jar 文件添加到您的库中:javassist-3.9.0.GA.jar

                【讨论】:

                  【解决方案10】:

                  我认为您必须在 struts.xml 的标签 class="" 下提供完全限定名称。然后 它会开始传递你的动作。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-01-13
                    • 2016-03-03
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-04-14
                    相关资源
                    最近更新 更多