【发布时间】:2016-05-24 18:32:15
【问题描述】:
我正在使用下面提到的 Spring 代码来处理异常并将响应返回给客户端。由于我在这里使用了 ResponseBody 注释,所以我期待 spring 在出现错误时返回 JSON 响应,但我看到在客户端收到以下响应(JSON 响应在 responseText 内,而不是直接返回到客户端)。请告知我如何将 JSON 响应返回给调用者-
在客户端收到响应:-
Object {readyState: 4, responseText: "{"status":false,"msg":"User Data not available","r…"MARSAPI003","noOfRecords":0,"responseList":null}", responseJSON: Object, status: 403, statusText: "Forbidden"}
Spring 代码:-
@ExceptionHandler(MarsUnAuthorizedOperation.class)
@ResponseBody
@ResponseStatus(value=HttpStatus.FORBIDDEN)
public MarsResponse unAuthorizedOperationExceptionHandler(final Exception ex){
final MarsResponse response = new MarsResponse();
response.setNoOfRecords(0);
response.setMsg(ex.getMessage());
response.setResponseCode(marsMessageProperties.getUnauthorizedOperationErrorCd());
response.setResponseMessage(marsMessageProperties.getUnauthorizedOperationErrorMsg());
response.setStatus(false);
return response;
}
【问题讨论】:
-
我认为它可能会干扰 @ResponseStatus(value=HttpStatus.FORBIDDEN) 注释(这会导致其他一些处理程序进一步处理它)。尝试删除它并确保该类本身使用@ControllerAdvice 进行注释。我想你在一年多过去了之后就不需要这个建议了,但我把它留在这里给那些迷路的人。
-
尝试在类的顶部添加@Produces(MediaType.APPLICATION_JSON)。
标签: java json spring spring-mvc