あけまして、おめでとうございます。ともです。
Springを利用してアプリを作成していまして、ValidationにHibernate Validatorを利用することにしました。
環境構築で詰まったので備忘を残します。
Validationが効かない
@Data
public class LoginForm implements Serializable {
private static final long serialVersionUID = 1L;
@NotBlank
@Size(min=1, max=5)
private String userName;
@NotBlank
@Email
private String email;
@NotBlank
private String password;
@NotBlank
private String rePassword;
上記のようにJavaBeanにjavax.validation.constraints.*のアノテーションを設定しているにも関わらず、BindingResultがエラーにならない。
結論
公式サイトに書いてました。
一応表としても残しておきます。
Hibernate Validator | 7.0 | 6.2 | 6.1 | 6.0 | 5.4 |
---|---|---|---|---|---|
Java | 8 or 11 | 8 or 11 | 8 or 11 | 8 or 11 | 6, 7 or 8 |
Bean Validation | N/A | N/A | N/A | 2.0 | 1.1 |
Jakarta Bean Validation | 3.0 | 2.0 | 2.0 | N/A | N/A |
私は、
- Java11
- Bean Validation 2.0
- Hibernate Validator7.0
を利用していましたが、組み合わせが悪かったです。
- Java11
- Bean Validation 2.0
- Hibernate Validator 6.0
とすることで解決しました。
jakarta.validationを利用する場合は、Hibernate Validatorは6.1以上
javax.validationを利用する場合は、Hibernate Validatorは5.4・6.0
を利用することが分かります。