2016-02-13 102 views
2

我正在使用下面提到的Spring代碼來處理異常並將響應返回給客戶端。由於我在這裏使用了ResponseBody註解,所以我期待Spring會在出現錯誤時返回JSON響應,但我會在下面看到客戶端收到的響應(JSON響應位於responseText中,而不是直接返回給客戶端)。請指點我怎麼能返回JSON響應呼叫者在客戶端收到從Spring異常處理程序返回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; 
} 
+0

我認爲它可能會干擾@ResponseStatus(value = HttpStatus.FORBIDDEN)註釋(這會導致一些其他處理程序進一步處理它)。嘗試刪除它,並確保該類本身用@ControllerAdvice註釋。我猜你在一年多的時間內不需要這個建議,但是我也把它留在了這裏,也是爲了那些在這裏流浪的人。 – Arsen

回答

-1

我認爲這是你的@ResponseBody註釋會阻止Spring將您的MarsResponse對象編組爲JSON對象。嘗試刪除並再次檢查。