如果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');!
答案 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);