ActionError未显示

时间:2013-12-31 11:33:11

标签: java javascript jquery jsp struts2

如果Action类返回错误,我想在我的Error.jsp中加载ErrorDiv。我正在进行AJAX通话。

JS:

success: function(result){    
    if(result === 'success')
        alert('Database Updated Successfully!');
    else{
         $('#ErrorDiv').load('/gma/pages/Error.jsp');
    }
}

JSP:

<body>

<%
    request.setAttribute("decorator", "none");
    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
    response.setHeader("Pragma","no-cache"); //HTTP 1.0
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
<s:if test="hasActionErrors()">
       <s:actionerror />
</s:if>

</body>

但是,不会显示操作错误。在firebug中,我检查了对GET Error.jsp的响应,因为<body> </body>部分是空的。

为什么actionError没有显示?

修改

行动类

try{
slsConfigureTspThresholdRemote.setThresholdParameters(circleId, tspId, thresholdTypeFlag, thresholdParametersList);

}
catch (Exception e){    
    addActionError(e.getMessage());
    e.printStackTrace();

    result = "error";
    return ERROR;
}

struts.xml中:

<action name="updateThresholdParameters"
class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="updateThresholdParameters">

<result name="success" type="json">
    <param name="root">result</param>
</result> 

<result name="error">pages/Error.jsp</result>

目前,我正在执行$('#ErrorDiv').html(result);,以便我的JSP加载到div而不是

$('#ErrorDiv').load('/gma/pages/Error.jsp');!

1 个答案:

答案 0 :(得分:0)

验证错误仅适用于同一请求。此外,对struts标记不起作用的Web容器也可以直接访问JSP。您应该使用操作来呈现JSP,如果要保留先前请求的验证错误,则操作应运行message store interceptor。如果要使用相同的响应返回不同的结果,可以为每个结果设置不同的状态代码。在客户端上,您可以检查Ajax响应返回的状态代码并执行相应的操作。

success: function(data, textStatus, jqXHR){
    if(jqXHR.status == 201) {
      $('#ErrorDiv').html(data);        
    } else {
      alert('Database Updated Successfully!'); 
    }
}

在JSP中将以下内容添加到scriptlet代码

response.setStatus(201);