Spring Boot でユーザ登録機能を作成中です。
その中で登録済みのメールアドレスをバリデーションする処理を作ってみたところ、
HV000028: Unexpected exception during isValid call. となります。
- アノテーションクラスを作成
- 実際にバリデーションするクラスを作成
- Modelにアノテーションを追加
NetBeansからデバッグしたところ、valueという変数には入力した内容が入っていました。
初心者で問題の切り分け方法がわからないのでアドバイスいただければ幸いです
UserService
public User findByMail(String mail){ return userRepository.findByMail(mail); }
Unused.java (アノテーションクラス)
@Documented @Constraint(validatedBy = {UnusedValidator.class}) @Target({FIELD}) @Retention(RUNTIME) public @interface Unused { String message() default "登録済みメールアドレスです"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; @Target({FIELD}) @Retention(RUNTIME) @Documented public @interface List { Unused[] value(); } }
UnusedValidator
@Component public class UnusedValidator implements ConstraintValidator<Unused, String> { @Autowired UserService userService; public void initialize(Unused constraintAnnotation) { } public boolean isValid(String value, ConstraintValidatorContext context) { User user = userService.findByMail(value); if(user == null){ return true; } return false; } }
User(Model)
@NotBlank @Column(name = "mail") @Unused private String mail;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/05 11:07 編集
2017/07/05 11:44
2017/07/08 14:45
2017/07/08 16:32
2017/07/09 12:41
2017/07/09 13:11