Здравствуйте!
Вы сильно заморочились, если честно... тут даже Spring ни причем, а больше базовые знания html + js
Вот, ваша форма:
<form th:action="@{/register}"
th:object="${personForm}" method="POST">
Login:
<input type="text" th:field="*{name}" />
<br/>
Email:
<input type="text" th:field="*{email}" />
<br/>
Password:
<input type="text" th:field="*{password}">
<br/>
Confirm password:
<input type="text" th:field="*{doublePassword}">
<input type="submit" value="Create" />
</form>
1) небольшой совет используйте специфические инпуты. Например, если вам нужно поле майл, то используйте майл и т.д.
Соответственно:
<form th:action="@{/register}"
th:object="${personForm}" method="POST">
Login:
<input type="text" th:field="*{name}" />
<br/>
Email:
<input type="email" th:field="*{email}" />
<br/>
Password:
<input type="password" th:field="*{password}">
<br/>
Confirm password:
<input type="password">
<input type="submit" value="Create" />
</form>
2) Определитесь с тем, где именно вы хотите валидировать совпадение пароля на клиенте или на сервере. Как по мне, на клиенте лучше, чтобы лищний раз не нагружать сервер.
Если на клиенте, то средствами js, если на сервере, то средствами java. Рассмотрим оба варианта:
- На сервере. Получаете оба пароля из формы, сравниваете через equals() и возвращаете нужный результат. Если пароль неверен, то можете добавить сообщение через
model.addAttribute()
и вывести в шаблоне
@RequestMapping(value = {"/register"} , method = RequestMethod.POST)
public String savePerson(Model model, @ModelAttribute("personForm") UserForm personForm) {
if(!personForm.getPassword.equals(personForm.getPasswordConfirmation)) {
model.addAttribute("passwordIncorrect", "Вы ввели некорректный пароль");
return "register";
}
if(personForm.checkPassword() &&
userRepository.findByEmail(personForm.getEmail()) == null &&
userRepository.findByName(personForm.getName()) == null) {
AppUser user = new AppUser(personForm.getName(),
personForm.getEmail(),
personForm.getPassword());
user.setEnabled(true);
user.setRoles(Collections.singleton(Role.USER));
userRepository.save(user);
return "home";
}
return "register";
}
- Обработка на клиенте средствами js. Идея заключается в том, что вы деактивируете кнопку "Регистрация" и только если пароли совпадают, то активируете кнопку.
Тут материалов хватает. Наберите в гугл jquery password validation.
Вот, пример:
Скрипт -
https://www.jqueryscript.net/form/Password-Strengt...
Демо -
https://www.jqueryscript.net/demo/Password-Strengt...