首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用类的setter分配值时验证类/bean类的变量

如何在使用类的setter分配值时验证类/bean类的变量
EN

Stack Overflow用户
提问于 2022-02-04 16:12:30
回答 2查看 639关注 0票数 0

我对Java和Spring非常陌生,我试图实现对类的变量的验证,如下所示,并希望在使用类的setter初始化值时验证每个变量。

代码语言:javascript
复制
import javax.validation.constraints.Digits;
import javax.validation.constraints.Size;

import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
public class LoanRequestBean {
    @Size(max = 8)
    String uniqueRefBancs;
    @Digits(integer=2)
    Integer loanId;
    @Size(max = 20)
    String loanIban;
}

变量初始化由setter完成,如下所示。

代码语言:javascript
复制
import org.springframework.stereotype.Component;

@Component
public class BancsRequestRecords {
    private String[] fieldsArray;
    @Valid
    LoanRequestBean loanRequest = new LoanRequestBean();
    
     public loanRequestBean RequestParser(String message) {
         fieldsArray = message.split("¬");
            loanRequest.setUniqueRefBancs(fieldsArray[0]);
            loanRequest.setLoanId(Integer.valueOf( fieldsArray[1]));
            loanRequest.setLoanIban(fieldsArray[2]);
           return loanRequest;

}
}

当我试图在方法的参数中使用消息作为2028110600000001000752¬123456¬FI9080706050403020调用Request解析器方法时,这些值没有得到验证。uniqueRefBancs的最大长度为8,但初始化时仍然不会抛出任何错误。如果这是验证变量的正确方法,或者任何其他方法来实现它,你能帮我吗?

EN

回答 2

Stack Overflow用户

发布于 2022-02-04 16:49:23

当对方法参数使用@Valid或@Valid注释时,会执行Bean验证。进一步的详细信息这里。您可以使用一个方法来验证您的loanRequestBean。要检查验证结果,可以使用BindingResult。编辑:不相关,但我会考虑将loanRequestBean重命名为LoanRequestBean,以遵循java类名约定。

票数 0
EN

Stack Overflow用户

发布于 2022-02-04 19:20:26

您需要以编程方式触发loanRequest对象的验证,如下所示:

代码语言:javascript
复制
import org.springframework.stereotype.Component;

@Component
public class BancsRequestRecords {
     private LoanRequestBean loanRequest = new LoanRequestBean();
     private Validator validator;

     public BancsRequestRecords(Validator validator) {
          this.validator = validator;
     }
    
     public loanRequestBean RequestParser(String message) {
          String[] fieldsArray = message.split("¬");
          loanRequest.setUniqueRefBancs(fieldsArray[0]);
          loanRequest.setLoanId(Integer.valueOf( fieldsArray[1]));
          loanRequest.setLoanIban(fieldsArray[2]);

          Set<ConstraintViolation<LoanRequestBean>> violations = validator.validate(loanRequest);

          return loanRequest;
    }
}

您可以在https://www.baeldung.com/javax-validation#programmatic上阅读更多有关这方面的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70989489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档