公共类Dog {私有字符串名称; 私有int权重; ... getters和setters以及构造函数}
控制器
@RequestMapping(value =“ / dogs”,方法= RequestMethod.POST,产生 =“ application / json”) 公共无效createDog(狗狗){ 保存博士(狗); }
当我使用json {“ name”:“ bark”,“ weight”:50}调用终结点时会怎么样? 我收到一个错误:
“无法将类型为'null'的值转换为必需的类型'int';嵌套异常为org.springframework.core.convert.ConversionFailedException:无法将类型'null的值从类型[null]转换为类型[int] ';嵌套异常是java.lang.IllegalArgumentException:无法将空值分配给原始类型”, “ objectName”:“狗”, “ field”:“ weight”, “ rejectedValue”:null, “ bindingFailure”:是的, “ code”:“ typeMismatch”
“消息”:“验证失败,对象=“狗”。错误计数:1”,
edit:布尔型和双精度型出现相同的问题。我想我必须使用对象而不是原始对象?
答案 0 :(得分:3)
在@RequestBody
方法中将注释dog
添加到参数create
答案 1 :(得分:0)
仅适用于对象,因此请使用Integer而不是int。
答案 2 :(得分:0)
如果存在可能性对象接收到null,则不能使用类型原语,相同的int,char和boolean。
private int weight
使用类型对象相同的Integer,Boolean ...对于一个类型基本类型具有Object的对象,则可以接收空值。
答案 3 :(得分:0)
需要指定@RequestBody
批注以指定我们将DOG对象作为请求正文的一部分发送:
@RequestMapping(value = "/dogs", method = RequestMethod.POST, produces = "application/json")
public void createDog((**@RequestBody** Dog dog) { dr.save(dog); }