【发布时间】:2020-04-28 12:34:27
【问题描述】:
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = false)
public class RetailerPincodeMapping {
@Id
private String id;
@NotEmpty
@Indexed
private Long retailerId;
@NotEmpty
@Indexed
private Integer pincode;
private boolean active;
@NotEmpty
private String deliveryMode;
@CreatedDate
private Date createdAt;
@LastModifiedDate
private Date lastModifiedAt;
}
目前有一个这样定义的类。 一个理想的要求是:
{
"retailerId": 239,
"pincode": 40061,
"deliveryMode": "COURIER",
"active": true
}
假设如果将retailerId 显式设置为null 或任何其他无法解析为Long 的值,我会收到一个错误(期望的行为),但如果我在请求中完全跳过该属性而不是将其视为null(不需要)
{
"retailerId" : null //Throws error (desired)
"pincode": 40061,
"deliveryMode": "COURIER",
"active": true
}
{
"pincode": 40061, // Doesn't throw an error (Undesired)
"deliveryMode": "COURIER",
"active": true
}
我怎样才能避免这种情况? 如果请求中不存在所有必需的属性,我希望请求失败。
【问题讨论】:
-
你试过spring验证器了吗?
-
@NotEmpty允许null添加一个额外的@NotNull。 -
@M.Deinum 那没有解决问题
-
什么不起作用?它应该,您是否使用了正确的
@NotNull注释并且您的类路径上是否有一个有效的验证实现,如 hibernate-validator(没有它,注释不会做任何事情!)。
标签: json spring spring-boot