我的servlet代码是
try{
//something
response.setStatus(201);
out.print("Data successfully saved");
}
catch(SomeException e){
response.sendError(400, e.getMessage());
}
$.ajax({
type:'POST',
data: {
//some data to be passed
},
dataType: 'text',
url:'AjaxController',
success: function(response){
alert(response);
},
error: function(jqXHR, textStatus, message) {
//error handling
},
complete: function(){
//window.location.reload(true);
}
});
servlet中的异常可以有不同的消息,所以我的目的只是将状态代码和消息传递给客户端,以便它可以在一个范围内显示.
如果成功,成功块正在接收响应,我看到我在out.print()中写的任何内容都在其中.
>将成功写入out.print并在Ajax函数中成功阻止,使用状态代码编写多个检查,并决定是显示成功消息还是错误消息.
我并不赞成这一点,因为我感觉它紧密耦合,并且仍然在执行成功操作时执行错误的请求或异常.
>使用response.sendError(status_code :: int,e.getMessage():: String)
即使这确保调用Ajax中的错误块,但是sendError API创建了一个HTML页面,放入我的消息并发送它,我无法直接访问它.所以在AJAX中,我将被迫编写一个解析器来获取异常消息.这在我看来也不是NO.
我该如何实现这种异常处理?
我试图以最好的方式解释,如果需要更多信息,请告诉我.它是一个简单的API,客户端使用表单数据调用servlet,表单数据在服务器中创建/更新,或者在某些条件不匹配时失败.并且在一个范围内,在同一表单页面中显示该成功或异常信息.
解决方法:
我试过这个,发现状态400的异常现在进入错误块,我能够在错误块内部用jqXHR.responseText检索消息.我已经做了:
response.setStatus(400);
out.print(e.getMessage());
out.flush();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。