代码之家  ›  专栏  ›  技术社区  ›  coding_idiot

Struts2 addActionError将结果设置为重定向结果时自动输入

  •  1
  • coding_idiot  · 技术社区  · 11 年前

    我有一个struts2操作,它使用设置了一些错误 addActionError 下面这样的东西

     public String del() {
            if (new OrdersService().get(idorder) == null) {
                addActionError("Order not found");
            } else {
                new OrdersService().remove(idorder);
                addActionMessage("Order deleted successfully");
            }
            return SUCCESS;
        }
    

    因此,上述方法无论发生什么,都会返回“成功”的结果。

    但在struts.xml中,我使用了重定向结果类型来重定向到另一个操作 而这个动作从未执行过,相反,我得到了结果“输入”,我无法理解出了什么问题?

    是不是有点像 如果操作设置 actionError ,无法执行另一个操作,并且将立即抛出“输入”结果。但这没有意义(至少对我来说)!

    [EDIT]包括struts.xml的某些部分

    <action name="/order/{idorder:[0-9]+}/del" class="actions.OrderAction" method="del">
        <interceptor-ref name="store">
            <param name="operationMode">AUTOMATIC</param>
        </interceptor-ref>
        <interceptor-ref name="defaultStack" />
    
        <result name="success" type="redirect">orders</result>
    </action>
    
    2 回复  |  直到 8 年前
        1
  •  3
  •   Andrea Ligios Dileep    11 年前

    默认堆栈包括“工作流”拦截器。

    如果存在操作或字段错误,则此拦截器将返回“输入”结果,因为存在错误。

    阅读一些文档会为你指明正确的方向。请注意,您的错误无论如何都会在重定向时丢失,除非您特别保存它们。

    此外,如果您想重定向到某个操作,请使用“actionRedirect”结果类型。

        2
  •  0
  •   Khan    7 年前
    public String del() {
        if (new OrdersService().get(idorder) == null) {
            addActionError("Order not found");
            return ERROR;
        } else {
            new OrdersService().remove(idorder);
            addActionMessage("Order deleted successfully");
            return SUCCESS;
        }
    }
    

    还包括返回类型“error”,就像您在struts.xml中的操作映射中对返回类型“success”所做的那样