Spring Boot Web应用程序如何验证另一个字段为条件的表单字段?

问题描述 投票:0回答:2

我有一个Spring Boot Web应用程序,其中,我的表单支持Bean的字段都用Bean Validation注释(请参阅Baeldung's tutorialthe docs at spring.io)进行注释。例如,Customer bean上的字段可能像这样注释:

@NotBlank
@Pattern(regexp="[ \\.A-Za-z-]*")
private String firstName;

@DateTimeFormat(pattern="M/d/yyyy")
@NotNull
@Past
private Date DOB;

[我想知道的是:((如何)我可以实现一个查看多个字段的复杂验证?我的意思是,使用此框架。例如,假设我有一个字段Country和一个字段ZipCode,并且当且仅当ZipCode等于@NotBlank时,我希望Country"US",否则为可选。

[在我的控制器中,通过使用@Valid批注非常轻松地触发了验证,并且错误附加到BindingResult对象上。像这样:

@PostMapping("customer/{id}")
public String updateCustomer( @PathVariable("id") Integer id,
                              @Valid @ModelAttribute("form") CustomerForm form, 
                              BindingResult bindingResult ) {
    if (bindingResult.hasErrors()) {
        return "customerview";
    }
    customerService.updateCustomer(form);
    return "redirect:/customer/"+id;
}

我希望找到一种写此条件验证器的方法,该条件验证器也将由@Valid注释触发,并将其错误消息附加到ZipCodeBindingResult字段中]。理想情况下,我根本不需要更改控制器代码。

java spring spring-boot validation bean-validation
2个回答
0
投票

您将获得有关创建自定义验证器类的帮助,以下链接将为您提供帮助:https://www.baeldung.com/spring-mvc-custom-validator#custom-validation


0
投票

对于这种东西,您需要使用跨字段验证。请尝试:

© www.soinside.com 2019 - 2024. All rights reserved.