我有一个REST API控制器,如下面的代码。如果我使用@valid
注释,则会控制客户实体的每个字段以进行验证。
@ResponseBody
@RequestMapping(value = API.UPDATE_CLIENT, produces = ResponseType.JSON, method = RequestMethod.POST)
public HashMap update(
@PathVariable(value = "id")int id,
@RequestBody Client clientData
) {
clientLogic.update(id, clientData);
....
}
客户的实体包含大约5个字段(ID,姓名,地址,电子邮件,电话)。当我更新此记录时,我不会在RequestBody中发送所有5个字段。我只是想验证来自RequestBody。
答案 0 :(得分:8)
你可以使用spring的@Validated
而使用groups
。如果我理解正确,将会设置一些值,其他值则不会。因此,问题仅适用于空检查。您想暂时允许空值。
public interface NullAllowed {}
NullAllowed
组@Email(groups = NullAllowed.class) //email allows null, so you are good
private String email;
@NotNull //skip this check - not assigned to NullAllowed.class
@Size(min=1, groups = NullAllowed.class)
private String name;
public HashMap update(
@PathVariable(value = "id")int id,
@Validated(NullAllowed.class) @RequestBody Client clientData)
仅验证标记为NullAllowed.class的检查。
检查出来: