java-无法显示ActionError

如果Action类返回错误,我想在ErrorDiv中加载Error.jsp.我正在拨打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>

但是,不会显示操作错误.在萤火虫中,我检查了GET Error.jsp的响应,其中< body> &LT /体&GT部分变成空的.

为什么没有显示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');!

解决方法:

验证错误仅适用于同一请求.同样,在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);
上一篇:java-客户端验证无法使用validate()


下一篇:java-通过Struts2中的代码设置语言环境