java - 为什么 "return ERROR"仅适用于异常?

标签 java jsp redirect error-handling struts2

在 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/

相关文章:

java - Java 5 和 Java 6 之间的 FileLock 变化

java - 如何制作不同长度的随机二维锯齿状数组?

java - 合并 Json 对象

node.js - Nginx配置

apache - 使用 .htaccess 的 URL 重定向

java - 对注释的引用是否恒定?

java - JSP 和 mysql 抛出 java.lang.classNotFoundException :com. mysql.jdbc.driver

java - struts到spring迁移消息资源

jsp - 无法在jsp中重定向404错误

javascript - 如何重定向到另一个页面并在reactjs中使用props