在我使用的 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:
Myerror.jsp
只是一个<s:actionerror />
带有通用 taglibs 和 html 标签的标签...
结论
AddActionError
除非有例外,否则我无法显示消息。我无法if
在我的行动中使用陈述。