如何解決@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。

推薦閱讀: