我使用 jquery post 方法调用save
方法DepartmentAction
,如果我保存一个 dup 部门(db 中不允许 dup 部门),该save
方法会引发异常,但用户无法从页面获取任何有关它的信息,这是我的代码:
部门动作类:
public class DepartmentAction extends ActionSupport{
public String save() throws Exception
{
this.departmentService.save(this.dept);
this.jsonResult = "success";
return "save";
}
}
struts.xml:
<package name="backstage-default" extends="ecs-default" namespace="/manager">
<action name="dept_*" class="com.nader.action.DepartmentAction" method="{1}">
<result name="save" type="json"><param name="root">jsonResult</param></result>
</action>
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error" />
</global-exception-mappings>
测试.jsp:
$.post('dept_save.do',
{'dept.deptId':$("#dialog_dept_deptId").val(),
'dept.deptName':$("#dialog_dept_deptName").val(),
'dept.manager':$("#dialog_dept_manager").val(),
},function(data, status, xhr){
alert(status);
if(status == 'success'){
alert('success:'+data);
$("#dialog-form").dialog("close");
getCountByAJAX();
getDeptByAJAX();
}else{
alert('error:'+data);
}
}
,"json").fail(function(data, status, xhr) {alert('fail:'+data);});
当save
抛出异常时,用户没有得到任何信息,没有错误,没有重定向,那我该怎么办?我不想try catch
在Actions里写block,因为太多了,让代码乱七八糟。还有其他一些方法吗?
提前致谢。
ps:真的很抱歉,我刚刚贴错了javascript
块,我更正了,现在fail
处理程序在struts2抛出异常时执行,但我不知道data
传递给浏览器的是什么,我看到dept_save.do
chrome的响应tools,里面包含了所有的exceptionStack信息,太多了,struts能不能返回一些小信息或者友情提示信息?