Valid高级校验之分组

该博客介绍了如何在Java后端使用注解进行Bean验证,特别是在Controller层方法中利用`@RequestBody`和`@Validated`注解结合自定义验证组实现参数校验。示例代码展示了一个名为`DictReceivableReqBO`的类,包含多个必填字段和对应的验证规则。同时,定义了两个验证组`IdGroup`和`ComGroup`,用于不同场景的验证需求。
摘要由CSDN通过智能技术生成

public class DictReceivableReqBO {
    @NotBlank(
        message = "填报单位4AID不可为空",
        groups = {DictReceivableReqBO.ComGroup.class}
    )
    private String acctUnitID;
    @NotBlank(
        message = "单据ID不可为空",
        groups = {DictReceivableReqBO.IdGroup.class}
    )
    private String billId;
    private String pageNum;
    @NotBlank(
        message = "主数据合同编码不可为空",
        groups = {DictReceivableReqBO.ComGroup.class}
    )
    private String contractcode;
    private String fundspropid;
    private String bizDate;
    private String arapModule;
    private String billNum;
    private Double dhxje;
    private Double clearAmount;
    private Double amount;
    private String projectInfoCode;
    private String partnerCode;

    public DictReceivableReqBO() {
    }

    public String getAcctUnitID() {
        return this.acctUnitID;
    }

    public String getBillId() {
        return this.billId;
    }

    public void setBillId(String billId) {
        this.billId = billId;
    }

    public void setAcctUnitID(String acctUnitID) {
        this.acctUnitID = acctUnitID;
    }

    public String getPageNum() {
        return this.pageNum;
    }

    public void setPageNum(String pageNum) {
        this.pageNum = pageNum;
    }

    public String getContractcode() {
        return this.contractcode;
    }

    public void setContractcode(String contractcode) {
        this.contractcode = contractcode;
    }

    public String getFundspropid() {
        return this.fundspropid;
    }

    public void setFundspropid(String fundspropid) {
        this.fundspropid = fundspropid;
    }

    public String getBizDate() {
        return this.bizDate;
    }

    public void setBizDate(String bizDate) {
        this.bizDate = bizDate;
    }

    public String getArapModule() {
        return this.arapModule;
    }

    public void setArapModule(String arapModule) {
        this.arapModule = arapModule;
    }

    public String getBillNum() {
        return this.billNum;
    }

    public void setBillNum(String billNum) {
        this.billNum = billNum;
    }

    public Double getDhxje() {
        return this.dhxje;
    }

    public void setDhxje(Double dhxje) {
        this.dhxje = dhxje;
    }

    public Double getClearAmount() {
        return this.clearAmount;
    }

    public void setClearAmount(Double clearAmount) {
        this.clearAmount = clearAmount;
    }

    public Double getAmount() {
        return this.amount;
    }

    public void setAmount(Double amount) {
        this.amount = amount;
    }

    public String getProjectInfoCode() {
        return this.projectInfoCode;
    }

    public void setProjectInfoCode(String projectInfoCode) {
        this.projectInfoCode = projectInfoCode;
    }

    public String getPartnerCode() {
        return this.partnerCode;
    }

    public void setPartnerCode(String partnerCode) {
        this.partnerCode = partnerCode;
    }

    public interface IdGroup {
    }

    public interface ComGroup {
    }
}

controller层方法上参数前加上

@RequestBody @Validated({DictReceivableReqBO.IdGroup.class})即可!!!

请求参数类中需要以接口声明

    public interface IdGroup {
    }

    public interface ComGroup {
    }

@valid注解通常用在Java的Spring框架中,它是用于请求体的数据校验。通过在方法参数前加上@valid注解,Spring会自动校验方法参数所对应的对象,如果校验不通过,则会抛出一系列的校验异常。当需要对表情包进行校验时,可以通过定义一个DTO(Data Transfer Object)类,并使用JSR-303提供的校验注解来定义校验规则。例如,可以为表情包的大小、格式、是否包含敏感信息等定义规则。 这里是一个简单的例子,展示如何为一个假设的表情包对象定义校验规则: ```java import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; public class EmojiPackageDTO { @NotNull(message = "表情包不能为空") @Size(min = 1, max = 10, message = "表情包的尺寸应在1到10之间") private String name; @Min(value = 1, message = "表情包至少包含1个表情") @Max(value = 100, message = "表情包最多包含100个表情") private Integer size; // 其他与表情包相关的属性和校验规则 // getters and setters } ``` 在处理请求的方法中,可以这样使用@valid注解: ```java @RestController public class EmojiController { @PostMapping("/upload-emoji") public ResponseEntity<String> uploadEmoji(@Valid @RequestBody EmojiPackageDTO emojiPackage) { // 处理上传的表情包 return ResponseEntity.ok("表情包上传成功"); } } ``` 如果表情包的数据不满足上面定义的规则,比如为空、尺寸不在指定范围内或者包含不合法的表情等,Spring就会进行拦截,并返回相应的错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值