Mil*_*daD 7 java spring json exception-handling spring-mvc
我正在使用带控制器的Spring MVC,我的问题是如何返回一个JSON响应,该响应与@ResponseBody对象不同,该对象被返回并且包含在要返回的JSON中.
为了进一步说明,我有一个名为"UserDetails"的对象,它有两个名为"name","emailAddress"的字段
@ResponseBody UserDetails
Run Code Online (Sandbox Code Playgroud)
现在json返回的样子
{name:"TheUsersName",emailAddress:"abc@abc123.com"}
有什么办法可以在返回之前修改json(所有控制器中所有方法中的所有jsons),其中将添加"status"字段,而其他json数据将位于json中的"data"键下.
另外当从某个地方的java服务器抛出异常时,如何将json返回到前端,json应该具有"status:false"和异常名称(尽管至少是状态部分)
sou*_*ica 14
创建响应类:
public class Response<T> {
T data;
boolean status = true;
public Response(T d) { data = d; }
}
Run Code Online (Sandbox Code Playgroud)
然后从您的控制器返回:
@ResponseBody public Response getUserDetails) {
//...
return new Response(userDetails);
}
Run Code Online (Sandbox Code Playgroud)
对于异常,您需要返回如下对象:
public class BadStatus {
String errorMessage;
boolean status = false;
public BadStatus(String msg) { errorMessage = msg; }
}
@ExceptionHandler(Exception.class)
public BadStatus handleException(Exception ex, HttpServletRequest request) {
return new BadStatus(ex.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
是的。相反,返回模型和视图。
public ModelMap getUserDetails() {
UserDetails userDetails; // get this object from somewhere
ModelMap map = new ModelMap()(;
map.addAttribute("data", userDetails);
map.addAttribute("success", true);
return map;
}
Run Code Online (Sandbox Code Playgroud)
要添加异常,您可以使用 key 和 success = false 以相同的方式执行此操作。
归档时间: |
|
查看次数: |
19445 次 |
最近记录: |