如果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> < /体>部分变成空的.
为什么没有显示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);