場景:Ajax傳一個json對象到服務器,讓參數自動封裝至與json對象匹配的java對象中。
錯誤類型
- 錯誤類型1:
"status":415
"error":"Unsupported Media Type"
"exception":"org.springframework.web.HttpMediaTypeNotSupportedException"
原因:沒有使用JSON.stringify(rowData)方法將請求參數轉化為json字符串
- 錯誤類型2:
"status":400
"error":"Bad Request"
"exception":"org.springframework.http.converter.HttpMessageNotReadableException"
原因:未使用[contentType : 'application/json',]配置指定請求參數格式。
正確代碼
js代碼:
rowData:是easyui datagrid表格的一行數據,和服務器的一個java類Condition對象屬性完全匹配。
JSON.stringify(rowData):將rowData對象解析成字符創。
$.ajax({ type : 'PUT', url : url, dataType : 'json',
contentType : 'application/json',
data : JSON.stringify(rowData), beforeSend : function () { // .... }, success : function (data) { // 返回的RequestResult的json對象 console.log(data); }, });
spring boot Controller 接收參數的 java代碼:
@RequestMapping(value = "/test", method = RequestMethod.PUT) public @ResponseBody RequestResult modifyCondition(@RequestBody Condition condition) {
System.out.println("condition:" + condition.toString());
// 創建假返回數據 RequestResult result = new RequestResult(); result.setCode(0); result.setMessage("success"); return result; }
返回結果: