【问题标题】:org.springframework.validation.BeanPropertyBindingResult: 5 errorsorg.springframework.validation.BeanPropertyBindingResult:5 个错误
【发布时间】:2020-09-11 11:59:36
【问题描述】:

我在 Spring 的应用程序中填写了联系表格。我有这个问题:

字段“名称”上的对象“联系人”中的字段错误:拒绝值 [空值];代码 [NotBlank.contact.name,NotBlank.name,NotBlank.java.lang.String,NotBlank]; 论据 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [contact.name,name];论据 [];默认消息[名称]]; 默认消息 [不能为空] 对象“联系人”中的字段错误 字段“消息”:拒绝值 [null];代码 [NotBlank.contact.message,NotBlank.message,NotBlank.java.lang.String,NotBlank]; 论据 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [contact.message,message];论据 [];默认消息 [信息]];默认消息 [它不能为空] 对象中的字段错误 字段“主题”上的“联系人”:拒绝值 [null];代码 [NotBlank.contact.subject,NotBlank.subject,NotBlank.java.lang.String,NotBlank]; 论据 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [contact.subject,subject];论据 [];默认消息 [主题]];默认消息 [它不能为空] 对象中的字段错误 字段“电话”上的“联系人”:拒绝值 [null];代码 [NotBlank.contact.phone,NotBlank.phone,NotBlank.java.lang.String,NotBlank]; 论据 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [contact.phone,phone];论据 [];默认消息[电话]]; 默认消息 [не может быть пусто] 对象“联系人”中的字段错误 在“电子邮件”字段上:拒绝值 [null];代码 [NotBlank.contact.email,NotBlank.email,NotBlank.java.lang.String,NotBlank]; 论据 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [contact.email,email];论据 [];默认消息[电子邮件]]; 默认消息[不能为空]]

控制器:

@Controller

public class ContactController {
    @Autowired
    MailComponent mailComponent;
    @GetMapping("/contact")
    public String contact(@ModelAttribute Contact contact) {
        return "contact";
    }
    @PostMapping("/contact")
    public String processContact(@Validated Contact contact, RedirectAttributes model, BindingResult bindingResult) {

        if (bindingResult.hasErrors())
            return "contact";

        if (mailComponent.sendSimpleMail(contact)) {
            model.addFlashAttribute("classCss", "alert sukcesu");
            model.addFlashAttribute("message", "Twoja wiadomość została wysłana");
        } else {
            model.addFlashAttribute("classCss", "alert ostrzeżenie");
            model.addFlashAttribute("message", "Wystąpił nieoczekiwany błąd, powtórz później");
        }

        return "redirect:/";
    }


}

实体:

public class Contact {
    @NotBlank
    @Pattern(regexp = "[\\p{L} '-]+", message = "{com.diet4you.LapkoEkaterina.constraint.Name.message}")
    private String name;

    @NotBlank
    @Pattern(regexp = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])",
            message = "{com.diet4you.LapkoEkaterina.constraint.Email.message}")
    private String email;

    @NotBlank
    @Pattern(regexp = "\\+(?:[0-9] ?){6,14}[0-9]", message = "{com.diet4you.LapkoEkaterina.constraint.Phone.message}")
    private String phone;

    @NotBlank
    private String subject;

    @NotBlank
    private String message;

    public Contact() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

验证属性:

javax.validation.constraints.AssertFalse.message = must be false
javax.validation.constraints.AssertTrue.message  = must be true
javax.validation.constraints.DecimalMax.message  = must be less than ${inclusive == true ? 'or equal to ' : ''}{value}
javax.validation.constraints.DecimalMin.message  = must be greater than ${inclusive == true ? 'or equal to ' : ''}{value}
javax.validation.constraints.Digits.message      = numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
javax.validation.constraints.Future.message      = must be in the future
javax.validation.constraints.Max.message         = must be less than or equal to {value}
javax.validation.constraints.Min.message         = must be greater than or equal to {value}
javax.validation.constraints.NotNull.message     = may not be null
javax.validation.constraints.Null.message        = must be null
javax.validation.constraints.Past.message        = must be in the past
javax.validation.constraints.Pattern.message     = must match "{regexp}"
javax.validation.constraints.Size.message        = size must be between {min} and {max}

org.hibernate.validator.constraints.CreditCardNumber.message        = invalid credit card number
org.hibernate.validator.constraints.EAN.message                   = invalid {type} barcode
org.hibernate.validator.constraints.Email.message                   = not a well-formed email address
org.hibernate.validator.constraints.Length.message                  = length must be between {min} and {max}
org.hibernate.validator.constraints.LuhnCheck.message               = The check digit for ${validatedValue} is invalid, Luhn Modulo 10 checksum failed
org.hibernate.validator.constraints.Mod10Check.message              = The check digit for ${validatedValue} is invalid, Modulo 10 checksum failed
org.hibernate.validator.constraints.Mod11Check.message              = The check digit for ${validatedValue} is invalid, Modulo 11 checksum failed
org.hibernate.validator.constraints.ModCheck.message                = The check digit for ${validatedValue} is invalid, ${modType} checksum failed
org.hibernate.validator.constraints.NotBlank.message                = This field is required
org.hibernate.validator.constraints.NotEmpty.message                = may not be empty
org.hibernate.validator.constraints.ParametersScriptAssert.message  = script expression "{script}" didn't evaluate to true
org.hibernate.validator.constraints.Range.message                   = must be between {min} and {max}
org.hibernate.validator.constraints.SafeHtml.message                = may have unsafe html content
org.hibernate.validator.constraints.ScriptAssert.message            = script expression "{script}" didn't evaluate to true
org.hibernate.validator.constraints.URL.message                     = must be a valid URL

org.hibernate.validator.constraints.br.CNPJ.message                 = invalid Brazilian corporate taxpayer registry number (CNPJ)
org.hibernate.validator.constraints.br.CPF.message                  = invalid Brazilian individual taxpayer registry number (CPF)
org.hibernate.validator.constraints.br.TituloEleitoral.message      = invalid Brazilian Voter ID card number
com.diet4you.LE.Name.message                            = Tylko litery
com.diet4you.LE.Email.message                           = Nie format  e-mail
com.diet4you.LE.Phone.message                           = InNie format numeru

【问题讨论】:

  • 你的前端是什么(JSP、Thymeleaf、freemaker、..etc)?

标签: java spring spring-boot spring-mvc


【解决方案1】:

由于您在实体类“联系人”中设置了字段名称、电子邮件、电话、主题、消息的验证,请检查您是否在表单中传递了所有这些值。如果您没有按照 Entity 类传递值,Spring 将无法绑定您在方法 processContact 中传递的 Contact 对象并抛出 BeanPropertyBindingResult 错误。

【讨论】:

  • 我添加了验证属性
【解决方案2】:

BindingResult 需要紧跟在 bean 之后:

尝试改变

 @PostMapping("/contact")
    public String processContact(@Validated Contact contact, RedirectAttributes model, BindingResult bindingResult)

@PostMapping("/contact")
    public String processContact(@Validated Contact contact, BindingResult bindingResult, RedirectAttributes model)

【讨论】:

    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多