Java简单对象使用了@Data注解,前端请求报错:
JSON parse error:
Cannot construct instance of `com.xxx.Student`
(although at least one Creator exists):
cannot deserialize from Object value (no delegate- or property-based Creator)
简单来说就是对象缺少了无参构造
注意:正常情况下单使用@Data是会生成无参构造的,这个不用怀疑。
错误源码示例:
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import lombok.NonNull;
@Data
public class Student {
@NotEmpty
String name;
@NonNull
Integer age;
@NotEmpty
String address;
}
晃眼一看,上面的代码没啥问题,仔细一看
再仔细看,字段注解用错了,验证非空的注解应该使用Java包的@NotNull
不是lobok包的@NonNull
,修改注解后正常
修改后代码参考:
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class Student {
@NotEmpty
String name;
@NotNull
Integer age;
@NotEmpty
String address;
}
搞定。
http://blog.xqlee.com/article/2504011510151981.html