如何解決@NotBlank不生效的問題
解決@NotBlank不生效
在項目開發中,發現一個類中包含有另外一個類,這種包含關系的類上的@NotBlank校驗不生效,後來發現需要在內部的類的域上加上@Valid註解,如下:
/** * 標簽體系ID */ @NotBlank(message = "00000002") @Length(max = 20, message = "00000005") private String systemId; /** * 條件模板id */ private String templateId; /** * 條件模板代碼 */ private String templateCode; /** * 條件模板名稱 */ @NotBlank(message = "00001001") @Length(max = 20, message = "00001002") private String templateName; /** * 條件表達式 */ @NotBlank(message = "00001003") @Length(max = 200, message = "00001004") private String templateConditionExpr; /** * 排序 */ private Integer sort; /** * 條件模板字段數據 */ @Valid @NotEmpty(message = "00001005") private List<PotentialConColParam> conTemplatesCols;
/** * 標簽代碼 */ @NotBlank(message = "00001006") @Length(max = 64, message = "00001007") private String labelCode; /** * 條件名稱 */ @NotBlank(message = "00001008") @Length(max = 20, message = "00001009") private String conditionName; /** * 操作符 */ @NotBlank(message = "00001010") @Length(max = 20, message = "00001011") private String operation; /** * 條件賦值 */ @NotBlank(message = "00001012") @Length(max = 20, message = "00001013") private String conditionValue;
@NotBlank @NotEmpty不生效,以及對象嵌套問題
問題1:
最近做一個新項目,寫新接口時發現@NotBlank @NotEmpty不生效,@NotNull則生效,令人費解。通過搜索資料以及對項目依賴一步步排除發現項目中引入的jar包有問題,見紅色標識出來的
刪除以上3個jar,新增org.hibernate後問題解決
用法:
step1、Controller層接口入參處加@Validated註解(org.springframework.validation.annotation包的)
step2、入參對象的屬性上加@NotBlank 或@NotEmpty 或 @NotNull –均來自於javax.validation.constraints包下, 三者區別可百度
問題2:
循環嵌套問題,入參對象bean中 屬性也為javabean對象,也希望子對象中的屬性能夠被校驗
用法: 在子對象屬性上面加@Valid 註解即可
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 解決get請求入參@NotNull驗證不生效問題
- 詳解Spring中@Valid和@Validated註解用法
- springmvc項目使用@Valid+BindingResult遇到的問題
- SpringBoot學習篇之@Valid與@Validated的區別
- 參數校驗Spring的@Valid註解用法解析