我想加载我的 Error.jsp
在我的 ErrorDiv
如果Action
类返回错误。我正在进行 AJAX 调用。
JS:
success: function(result){
if(result === 'success')
alert('Database Updated Successfully!');
else{
$('#ErrorDiv').load('/gma/pages/Error.jsp');
}
}
Error.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
没有显示?
编辑:
Action 类:
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');!
最佳答案
验证错误仅适用于同一请求。此外,对 JSP 的直接访问可能由 Struts 标记不起作用的 Web 容器处理。
您应该使用一个 Action 来呈现 JSP,并且该 Action 应该运行 store
interceptor如果您想保留上一个请求的验证错误。
如果您想使用相同的响应返回不同的结果,您可以为每个结果设置不同的状态代码。
在客户端你可以查看Ajax响应返回的状态码并做相应的事情。
success: function(data, textStatus, jqXHR){
if(jqXHR.status == 200) {
alert('Database Updated Successfully!');
}
}
error: function(data, textStatus, jqXHR){
if(jqXHR.status == 400) {
$('#ErrorDiv').html(data);
}
}
要在 JSP 中显示错误,请将以下内容添加到 scriptlet 代码中
response.setStatus(400);
关于java - 未显示 ActionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856712/