我对Java和Spring非常陌生,我试图实现对类的变量的验证,如下所示,并希望在使用类的setter初始化值时验证每个变量。
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完成,如下所示。
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,但初始化时仍然不会抛出任何错误。如果这是验证变量的正确方法,或者任何其他方法来实现它,你能帮我吗?
发布于 2022-02-04 16:49:23
当对方法参数使用@Valid或@Valid注释时,会执行Bean验证。进一步的详细信息这里。您可以使用一个方法来验证您的loanRequestBean。要检查验证结果,可以使用BindingResult。编辑:不相关,但我会考虑将loanRequestBean重命名为LoanRequestBean,以遵循java类名约定。
发布于 2022-02-04 19:20:26
您需要以编程方式触发loanRequest对象的验证,如下所示:
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上阅读更多有关这方面的内容。
https://stackoverflow.com/questions/70989489
复制相似问题