在 struts.xml 中我使用:
<result name="error">error</result>
然后在我的行动中我使用:
addActionError("ERROR RETURNED");
return ERROR;
当我提交表单时,它只是转到一个空白页,什么也不做。但是,如果我强制在操作中抛出异常,那么它会转到错误页面并显示 ActionError 消息。那么我这样做错了吗?如果是这样,我应该如何告诉struts使用“if语句”显示错误页面,而不是仅仅依赖昂贵的try catch?
请查看下面的编辑以了解更多详细信息。
编辑1:
我使用的是struts 2版本:2.1.8.1
编辑2:
例如,这是我用来测试的操作代码:
String test = "";
int number = 0;
try {
if (number == 1) {
test = SUCCESS;
} else if (number == 2) {
addActionError("ERROR RETURNED?");
test = ERROR;
} else if (number == 3) {
addActionError("ERROR RETURNED?");
test = INPUT;
} else {
test = LOGIN;
}
} catch (Exception e) {
addActionError("ERROR RETURNED? " + e);
}
return test;
这是我的 number.jsp 代码:
<s:form action="number_save" method="post">
<s:textfield name="number" label="Enter number" />
</s:form>
<s:actionerror />
编辑3:
这是我的 struts.xml 的较长版本:
<action name="number" method="numberCreate" class="NumberActionBean">
<result>number.jsp</result>
</action>
<action name="error">
<result>error.jsp</result>
</action>
<action name="number_save" method="numberSave" class="NumberActionBean">
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success" type="redirect">index</result>
<result name="input" type="redirect">number</result>
<result name="error">error</result>
<result name="login" type="redirect">login</result>
<result name="none">number</result>
</action>
编辑4:
我的error.jsp
就是一个<s:actionerror />
带有通用标签库和 html 标签的标签...
结论
我无法显示AddActionError
消息,除非有异常(exception)。我无法使用if
我的行动中的陈述。
最佳答案
也许你应该这样做:
<result name="error">error.jsp</result>
然后在error.jsp中:
<s:actionerror/>
我不确定,如果你只输入“error”而不是“error.jsp”作为结果,struts会将“error”作为一个 Action ,所以你不会收到错误消息。
最好,j
您的编辑 3:
<action name="error">
<result name="error">error.jsp</result>
</action>
<action name="number_save">
<result name="error" type="redirectAction">error</result>
</action>
关于java - 为什么 "return ERROR"仅适用于异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186056/