-->

Struts2的addActionError对重定向结果自动设置结果输入(Struts2 addAc

2019-10-18 01:15发布

我有一个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>

Answer 1:

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

如果有行动或领域错误的这个拦截返回“输入”的结果,因为有一个错误。

阅读一些文件将指向您在正确的方向。 需要注意的是你的错误,将在重定向丢失无论如何,除非您特别保存。

另外,如果你想重定向到一个动作,用“actionRedirect”结果类型。



Answer 2:

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中的动作映射做了返回类型的“成功”



文章来源: Struts2 addActionError setting result to input automatically on redirect result