JSP上未显示操作错误

时间:2015-05-12 08:50:00

标签: java jsp struts2 struts2-interceptors

我尝试在Action类中添加操作错误并在JSP页面上打印它们。

当发生异常时,它将进入catch块并在控制台中打印“插入异常,联系管理员时出错”。

在catch块中,我添加了addActionError(),我尝试在jsp页面中打印它...
但消息未在jsp页面中显示

我可能遗失或做错了什么?

Struts映射:

<action name="dataUpdate" class="foo.bar.myAction" method="updation">
    <result name="success" type="redirectAction">
        ../Aggregator/redirectToDataUpdate
    </result>
</action>

动作类:

public String updation() throws JiffieTransactionException{
    try {
        // do stuff...
    } catch (NumberFormatException e) {
        addActionError("Error in inserting the Exception, Contact the Admin");
        System.out.println("Error in inserting the Exception, Contact the Admin");
        e.printStackTrace();
    }
    return SUCCESS;
}

用于打印操作错误的JSP代码:

<s:if test="hasActionErrors()">
    <br></br>
    <div class="errors">
        <font color="red">
            <s:actionerror/>
        </font>
    </div>
</s:if>

2 个答案:

答案 0 :(得分:1)

在catch块中添加操作消息,如:

addActionMessage("Error in inserting the Exception, Contact the Admin"); //in catch block

然后在jsp上写:

<s:if test="hasActionErrors()">
  <br></br>
     <div class="errors">
       <font color="red">
              <s:actionerror/>
            </font>
     </div>
   <s:if test="hasActionMessages()">
     <div class="errors">
       <font color="red">
          <s:actionmessage/>
       </font>
      </div>
   </s:if>
  </s:if>

答案 1 :(得分:1)

执行redirectAction时,会创建一个新的Request,因此所有的actionMessages,actionErrors以及所有其他参数(未明确声明在struts配置中传递)都将丢失。

然后

  • 使用默认dispatcher结果而不是redirectAction结果,或
  • 使用MessageStore Interceptor保留重定向中的错误和消息,或
  • 在出现错误时返回类型调度程序的不同结果,例如。 ERROR

    <action name="dataUpdate" class="foo.bar.myAction" method="updation">
        <result name="success" type="redirectAction">....redirectToDataUpdate</result>
        <result name="error">previousPage.jsp</result>
    </action>
    
    public String updation() {
        try {
            // do stuff...
            return SUCCESS;
        } catch (NumberFormatException e) {
            addActionError("Errors... ");
            e.printStackTrace();
            return ERROR;
        }
    }