首页 > 解决方案 > BindingResult 对象保持为空

问题描述

我无法弄清楚为什么我的验证示例代码不起作用!这是我的对象:

@PasswordMatches
public class UtilisateurInscriptionEnCoursDto implements Serializable {

private static final long serialVersionUID = -4445329534944784344L;

/** The id. */
private Long id;

@NotNull(message = "Saisissez votre nom")
@NotEmpty
private String nom;

@NotNull
@NotEmpty(message = "Saisissez votre prénom")
private String prenom;

@NotNull
@NotEmpty(message = "Entrez un mot de passe")
private String password;

private String matchingPassword;

@ValidEmail
@NotNull
@NotEmpty(message = "Saisissez votre adresse mail")
private String email;

这是我的控制器:

   @GetMapping("/inscription")
public String afficherFormulaireInscription(WebRequest request, Model model) {
    model.addAttribute("user", new UtilisateurInscriptionEnCoursDto());
    return "inscription";
}

@PostMapping("/inscription")
public String enregistrerCompteUtilisateur(@ModelAttribute("user") @Valid UtilisateurInscriptionEnCoursDto utilisateurInscriptionEnCoursDto,
        BindingResult result, Model model, HttpServletRequest request) {

    if (result.hasErrors()) {
        return "inscription";
    }

    try {
        this.gestionUtilisateuFacade.verifierEmailInscriptionUtilisateur(utilisateurInscriptionEnCoursDto);
    } catch (UtilisateurExistantException ueEx) {
        String errMessage = this.messages.getMessage("message.regError", null, request.getLocale());
        model.addAttribute("message", errMessage);
        return "inscription";
    } catch (RuntimeException ex) {
        LOGGER.warn("Impossible de s'inscrire", ex);
        return "inscription";
    }

    return "succesInscription";
}

try/catch 块运行良好,但即使我将所有字段都留空,我也无法成功获得 result.hasErrors() == true。

任何帮助的想法

多谢。

标签: springvalidationthymeleaf

解决方案


我添加了我的评论作为答案:

如果您使用的是 spring boot 2.3+,则可能需要依赖 spring-boot-starter-validation。


推荐阅读