home wiki.fukuchiharuki.me
Menu

キーワード

  • Spring Boot
  • 入力チェック
  • 相関項目

したいこと

たとえば、『新しいパスワード』と『新しいパスワード(再入力)』が同じであることをチェックしたい。

どうやって

@AssertTrueを使うと楽に実装できる。

@Data
public class PasswordResetForm {

	@NotBlank
	private String currentPassword;
	@NotBlank
	private String newPassword;
	private String newPasswordConfirm;

	@AssertTrue(message="{application.validation.multiField.newPasswordConfirmed.message}")
	public boolean isNewPasswordConfirmed() {
		if (newPassword == null || newPassword.isEmpty()) return true;
		return newPassword.equals(newPasswordConfirm);
	}
	
}

Thymeleaf上では次のように書ける。

<p th:if="${#fields.hasErrors('*{newPasswordConfirmed}')
   th:errors="*{newPasswordConfirmed}">
エラーメッセージ
</p>

ノート

  • 入力があるときだけ、などにしたい場合、順番を気にする必要がある
  • 相関チェックするValidatorを作成することもできる(そのほうがいいかもしれない)
  • メッセージはValidationMessages.propertiesの方に書く(messages.propertiesでなく)

参考