Struts2 addActionError将结果设置为在重定向结果时自动输入
我有一个struts2动作,它使用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
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>