我正在编写一个SPRING控制器来管理某些实体,尝试编辑现有对象时遇到麻烦。
这是我的获取/发布映射,它会产生问题:
$('.jsmatchdate').text( function (_,txt) {
return txt.split(' ')[0];
})
类别类是这个:
@GetMapping(value = "/category/{id}/edit")
public String editCategoryGET(@PathVariable int id, Model model) {
Category category = repositoriesServices.getCategoryById(id);
log.info("editCategoryGET: " + category);
// set model attribute etc....
}
@PostMapping(value = "/category/{id}/edit")
public @ResponseBody
ResponseEntity editCategoryPOST(@PathVariable int id, Category category) {
log.info("editCategoryPOST: " + category);
// code...
}
当我尝试编辑@Entity
@Table(name = "categories")
public class Category {
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
private int id;
private String name;
@Lob
private String imageBase64;
@Transient
private MultipartFile image;
// getter setter
}
对象时,正如您在日志底部看到的那样,它直接来自数据库,但是当它来自Category
时,POST
字段为{{ 1}}。
imageBase64
ajax null
调用是通过以下方式完成的:
editCategoryGET: Category{id=1, name='vdsvsdv', imageBase64='data:image/png;base6...'}
editCategoryPOST: Category{id=1, name='vdsvsdv', imageBase64='null'}
我已经读过this,但是如果我放POST
,则会出现此错误:
var form = $('#form');
$.ajax({
type: "POST",
url: form.attr("action"),
data: new FormData(form[0]),
processData: false,
contentType: false,
dataType: 'json'
}).done(.........
即使我设置了@RequestBody
属性。
我知道我可以通过再次调用DB来获取旧数据来解决,但我希望有一种最干净的方法
解决方案: 我已经解决了编辑后发送json数据的问题:
org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundaryZJlpA2NOKy6YhELW;charset=UTF-8' not supported
答案 0 :(得分:1)
添加@RequestBody时,您期望使用json数据,但会从客户端发送表单数据。
您应该更改JavaScript代码以发送json请求。