Как сохранить данные в форме при отправке и недействительными при весенней загрузке - PullRequest
0 голосов
/ 02 мая 2019

У меня есть форма для обработки смены пароля.

<form method="POST" th:object="${changePassword}" th:action="@{/user/change_pass}">
    <input type="password" class="form-control" id="oldpass" th:field="*{oldPassword}">
    <input type="password" class="form-control" id="newpass" th:field="*{newPassword}"
    <input type="password" class="form-control" id="confirmPass" th:field="* {confirmNewPassword}"
    <input type="submit" class="btn btn-outline-primary btn-rounded waves-effect" value="Send"/>
</form>

В контроллере

@GetMapping(value = "/user/change_pass")
private String changePasswordPage(Model model){

    if (!model.containsAttribute("changePassword")) {
        model.addAttribute("changePassword", new ChangePassword());
    }

    return "web/view/accPasswordPage";
}

@PostMapping(value = "/user/change_pass")
private String saveNewPassword(@Valid ChangePassword changePassword, BindingResult result, Model model, RedirectAttributes redirectAttributes){
    if (result.hasErrors()) {
        redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.changePassword", result);
        redirectAttributes.addFlashAttribute("changePassword", changePassword);
        return "redirect:/user/change_pass";
    }
    return "redirect:/user/home";
}

когда пользователь нажимает отправить, если ошибка и возвращается, но данные формы теряются, как показано: enter image description here

Есть ли способ ввода пользовательских данных без потери, но при этом сохранения? Спасибо

1 Ответ

1 голос
/ 02 мая 2019

Я изменил View на следующий код, и он работал.

<form method="POST" th:object="${changePassword}" th:action="@{/user/change_pass}">
    <input type="password" class="form-control" id="oldPassword" name="oldPassword" th:value="*{oldPassword}">
    <input type="password" class="form-control" id="newPassword" name="newPassword" th:value="*{newPassword}" />
    <input type="password" class="form-control" id="confirmNewPassword" name="confirmNewPassword" th:value="*{confirmNewPassword}" />
    <input type="submit" class="btn btn-outline-primary btn-rounded waves-effect" value="Send"/>
</form>

мой код контроллера для пропуска всей другой логики и простого перенаправления.

@GetMapping(value = "/user/change_pass")
    private String changePasswordPage(Model model){

        if (!model.containsAttribute("changePassword")) {
            model.addAttribute("changePassword", new ChangePassword());
        }

        return "index";
    }

    @PostMapping(value = "/user/change_pass")
    private String saveNewPassword(@Valid ChangePassword changePassword, BindingResult result, Model model, RedirectAttributes redirectAttributes){
            redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.changePassword", result);
            redirectAttributes.addFlashAttribute("changePassword", changePassword);
            return "redirect:/user/change_pass";

    }
...