Java Bean Validation分組校驗

Java Bean Validation使用中,最常見的一個場景是,我們在增加和修改實體的時候,一般都是使用同一個實體類,但是增加和修改操作對實體的參數(shù)校驗是不同的。Java Bean Validation提供分組校驗的功能,可以實現(xiàn)針對不同的場景應用不同的校驗規(guī)則

定義分組類

每個分組類只需要一個接口就可以了

  • AddGroup
public interface AddGroup {
}
  • UpdateGroup
public interface UpdateGroup {
}

校驗規(guī)則上添加分組

@Data
public class Person {
    //添加分組信息:添加的時候不能有id,修改的時候卻一定要有id
    @Null(message = "id should be empty", groups = {AddGroup.class})
    @NotNull(message = "id should not be empty", groups = {UpdateGroup.class})
    private Integer id;

    @Length(min = 2, max = 10, message = "name的長度為[2-10]之間")
    @NotBlank(message = "name should not be empty")
    private String name;
}

修改校驗接口

  • @Valid修改成@Validated
  • 添加分組{AddGroup.class, Default.class}
@PostMapping("create")
public WebResult<String> create(@Validated({AddGroup.class, Default.class}) @RequestBody Person person) {
    log.info("person to create: {}", person);
    return new WebResult<>(person.getName());
}

@PutMapping("update")
public WebResult<Void> update(@Validated({UpdateGroup.class, Default.class}) @RequestBody Person person) {
    log.info("person to update: {}", person);
    return WebResult.SUCCESS;
}

注意事項

  • 配置分組的時候,記得不要漏掉默認分組Default.class,否則就只會校驗groups = {AddGroup.class}的規(guī)則了

參考

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容