当前位置: 首页 > 知识库问答 >
问题:

从ajax调用的spring控制器返回错误消息字符串的最佳实践是什么?

魏烨熠
2023-03-14

我有一个spring控制器,从那里返回一个字符串。基本上,我使用JSONObject和JSONArray,最后生成一个字符串并返回它。如:

@RequestMapping(value = "getValue")
    public @ResponseBody
    String getValue(){

    JSONObject jassonObject = new JSONObject();

    JSONArray jassonArray = new JSONArray();

    jassonObject.put("mykey",jassonArray);

    And finally:
    return jassonObject.toString();
}

但假设在生成这个JSONObject时,如果我得到任何异常,我希望返回该异常消息。即:

try {
JSONObject jassonObject = new JSONObject();

JSONArray jassonArray = new JSONArray();

jassonObject.put("mykey",jassonArray);

return jassonObject.toString();
} catch(Exception ex) {
return the exception?
}

我的问题是,如何正确地将这个异常值作为错误返回,并从ajax调用错误函数中正确地获得这个值?

共有2个答案

子车新立
2023-03-14

好的,在学习了一些知识之后,我发现,如果在为Ajax请求生成JSONObject时出现异常,我们应该使用http Bad request响应代码进行响应。就像我的例子:

try {
JSONObject jassonObject = new JSONObject();

JSONArray jassonArray = new JSONArray();

jassonObject.put("mykey",jassonArray);

return jassonObject.toString();
} catch(Exception ex) {
       jassonObject.put("errorMessageKey", e.getMessage()); // generating      
                                        //json object with error message
         response.setStatus(400); // bad request
         response.setContentType("application/json");
         response.setCharacterEncoding("UTF-8");
         response.getWriter().write(jassonObject.toString()); 
}
郑胡媚
2023-03-14

Ajax回调处理程序依赖于http状态代码。除了200之外,OK将触发错误回调。对于每个http状态代码,您可能有不同的错误处理程序。此外,在出现错误的情况下,返回非200 OK代码总是可取的。

请在以下链接中找到示例:如何在一个返回字符串的spring MVC@ResponseBody方法中响应HTTP 400错误?

 类似资料:
  • 在MVC框架中,数据在模型中处理。 在AngularJs中,直接在控制器中处理数据是常见的,还是应该在服务中处理?

  • 这是我的操作方法 返回此错误的最佳实践是什么?以一种用户友好的方式,并且在发生错误时我可以识别该错误。

  • 问题内容: 我正在阅读这篇文章:http : //eviltrout.com/2013/06/15/ember-vs- angular.html 它说, 由于缺乏约定,我想知道有多少Angular项目依赖于不良行为,例如直接在控制器内进行AJAX调用?由于依赖注入,开发人员是否将路由器参数注入指令中?AngularJS新手开发人员是否会以经验丰富的AngularJS开发人员认为惯用的方式来构造代码

  • 我在mvc5中使用API2控制器,实现CRUD操作。在POST方法中,我有一个if语句,当if语句结果为false时返回BadRequest()。 这是IF语句我需要显示字符串错误消息 if(allowanceDto.MinValue) 这是ajax调用: 我的问题是,当IF语句为false时,如何使用ajax显示BadRequest的字符串错误。

  • 我担心我们返回错误给客户的方式。 我们是否在收到错误时通过抛出HttpResponseException立即返回错误: 或者累积所有错误,然后发送回客户端: 这只是一个示例代码,验证错误或服务器错误都无关紧要,我只是想知道最佳实践,每种方法的优缺点。

  • 提交对映改动 一次提交要包括一个相关改动。例如,对于两个错误的修复应该进行两次不同的提交。精简的提交可以让其他的开发团队人员更简单地明白其改动的用义。如果其中一次提交的改动出现了问题,也可以方便地回滚到改动之前的状态。借助暂存功能来标记相关的改动文件,Git 可以为你打造出非常精准的提交。 频繁地提交改动 经常性地提交改动可以确保不会出现特别庞大的提交,同时也可以比较精准地对应到所需要的改动上。此