Сообщение об ошибке при смене пароля

В веб-программе есть страница со сменой пароля (вводишь текущий пароль, дважды вводишь новый пароль, если текущий пароль верен и новые пароли соответствуют друг другу, то изменение запиывается в БД). Хочу добавить в форму сообщение об ошибке, если нов.пароли не равны или текущий пароль введен с ошибкой. Как вариант, предполагаю, что можно сохранить три формы ввода паролей (первая - первичный ввод, вторая - первая форма с добавлением lable "не верно указан текущий пароль", третья - первая форма с добавлением lable "новые пароли не равны") и в контролере, взависимости от ситуации, выводить нужную из них. Но может быть у кого-нибудь есть понимание как в данном случае проводить валидацию встроеными средствами?

HTML код

<div class="container">
    <h1>Сменить пароль</h1>
   
    <form method="POST" th:action="@{/password/change}" >
        <label> Пароль: </label>
        <input type="password" name="current_password" id="current_password" class="form-control col-4 mb-4"/><br/>
        <label> Новый пароль: </label>
        <input type="password" name="new_password" id="new_password" class="form-control col-4 mb-4"/><br/>
        <label> Повторите новый пароль: </label>
        <input type="password" name="new_password_2" id="new_password_2" class="form-control col-4 mb-4"/><br/>
        <input type="submit" value="Изменить" class="btn btn-primary col-2"/>
    </form>
</div>

Контролер:

 @RequestMapping("/change")
    public String updatePassword(@RequestParam("current_password") String currentPassword,
                                 @RequestParam("new_password") String newPassword,
                                 @RequestParam("new_password_2") String newPassword2,Model model) {
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        if (securityConfig.passwordEncoder().matches(currentPassword,user.getPassword())) {
            if (newPassword.equals(newPassword2)){
                user.setPassword(securityConfig.passwordEncoder().encode(newPassword));
                userRepository.save(user);
                return "/info/change_password_successfully";
            }
        }
        return "redirect:/password";
    }

Ответы (1 шт):

Автор решения: Qwer

Вопрос решился путем добавления в форму трех пустых label, а в контролере, в зависимости от ситуации, присватваю им значение

Контролер

    private String messageCurrentPsw;
    private String messageNewPsw;
    private String messageSuccess;

 @RequestMapping("/change")
    public String updatePassword(@RequestParam("current_password") String currentPassword,
                                 @RequestParam("new_password") String newPassword,
                                 @RequestParam("new_password_2") String newPassword2,Model model) {
        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();

        if (!securityConfig.passwordEncoder().matches(currentPassword,user.getPassword())) {
            this.messageCurrentPsw="Пароль указан неверно";
            this.messageNewPsw="";
            this.messageSuccess="";
            return "redirect:/password";
        }
        if (!newPassword.equals(newPassword2)){
            this.messageCurrentPsw="";
            this.messageNewPsw="Пароли не совпадают";
            this.messageSuccess="";
            return "redirect:/password";
        }
        if (securityConfig.passwordEncoder().matches(currentPassword,user.getPassword())) {
            this.messageCurrentPsw = "";
            this.messageNewPsw="";
            this.messageSuccess="Пароль успешно изменен!";
            user.setPassword(securityConfig.passwordEncoder().encode(newPassword));
            userRepository.save(user);
            return "redirect:/password";
        }
        return "redirect:/password";
    }

Html форма

 <form method="POST" th:action="@{/password/change}" >
        <label> Пароль: </label>
        <span class = "error" > [[${messageCurrentPsw}]]</span>
        <input type="password" name="current_password" id="current_password" class="form-control col-4 mb-4"/><br/>
        <label> Новый пароль: </label>
        <span class = "error" > [[${messageNewPsw}]]</span>
        <input type="password" name="new_password" id="new_password" class="form-control col-4 mb-4"/><br/>
        <label> Повторите новый пароль: </label>
        <span class = "error" > [[${messageNewPsw}]]</span>
        <input type="password" name="new_password_2" id="new_password_2" class="form-control col-4 mb-4"/><br/>
        <input type="submit" value="Изменить" class="btn btn-primary col-2"/>
    </form>
→ Ссылка