- 我们在dto实体需要验证的属性前加上
@NotBlank、@NotNull、@NotEmpty注解,如下:
@Data
public class CompanyDTO {
@NotBlank(message = "公司名称不能为空")
private String companyName;
@NotBlank
private String oCode;//统一社会信用代码
@NotBlank
private String postCode;
@NotBlank
private String contacts;//企业联系人
@Pattern(regexp = MobileUtil.PHONE_REGEX)
private String telephone;//企业联系人手机号
@NotBlank
private String email;//企业邮箱
private String fax;//传真
}
这三个注解区别如下:
@NotBlank:只用在String上,表示传进来的值不能为null,而且调用trim()后,长度必须大于0
@NotNull:不能为null,但可以为empty(分配了内存空间,但值为空)
@NotEmpty:不能为null,而且长度必须大于0
- 如果需要dto中的注解生效有下列做法:
2.1、在service层接口入口处添加@Validated注解,此时运行项目,给添加了@NotBlank注解的字段传空值,发现没有对参数做任何验证;
2.2、我们还需要在接口方法的参数前加上@Valid注解,如下图所示:
加上@Valid注解之后再次运行,传递空值,会对参数进行验证从而报错。
2.3、上述方法也可以加在Controller进行验证,@Validated注解加在Controller层入口处,@Valid注解加在方法参数上,同样能起效果,如下:
- 如果传递的对象还包含其他对象,要对所包含的对象进行验证,上面的步骤是做不到的,嵌套验证需要在dto对象包含的对象也加上
@Valid注解,如下图:
备注:需要了解参数验证 @Validated 和 @Valid 的区别可以参考此文@Validated 和 @Valid 的区别
版权声明:本文为qq_40600507原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。