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

Struts2 addActionError将结果设置为在重定向结果时自动输入,struts2,struts,Struts2,Struts,我有一个struts2动作,它使用addActionError设置一些错误,如下所示 public String del() { if (new OrdersService().get(idorder) == null) { addActionError("Order not found"); } else { new OrdersService().remove(idorder); add

我有一个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
,则无法执行另一个操作,并将立即抛出“输入”结果。但这毫无意义(至少对我来说)

[编辑]包括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>

自动的
命令

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

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

阅读一些文档将为您指明正确的方向。请注意,您的错误将在重定向时丢失,除非您专门保存它们

此外,如果要重定向到操作,请使用“actionRedirect”结果类型

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;
    }
}

在struts.xml中的操作映射中也包括返回类型“error”,正如您对返回类型“success”所做的那样。请注意,您的错误无论如何都会列在重定向上,除非您专门保存它们。-请解释。好的,我似乎明白了。文档非常棒、简单且易于解释:我在action1中设置了错误,即使我将“input”结果配置为重定向操作结果,因此它应该调用第二个操作,但第二个操作不会执行,相反,在浏览器中,我看到错误信息说,第二个操作输入结果未定义。“will be list”是“将会丢失”,已编辑。请注意,在调用操作之前,工作流拦截器会返回输入结果(在验证拦截器引发一些输入错误之后)。如果您正在获取输入,则不会执行任何操作代码。请注意,最好将输入结果发送到启动请求的同一个JSP,原因有几个(您可以自动突出显示错误的字段,保留所有发送的数据等)@AndreaLigios只是出于好奇-如果即使输入了结果,我仍要重定向该怎么办。我刚看到上面,就得到了!!我正在使用
store
拦截器,它将重新填充重定向操作中的操作错误,因此,我可以纠正为什么在浏览器中未定义第二个操作输入结果。谢谢你们。
<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>