Thymeleaf不显示验证消息

时间:2017-01-25 18:56:29

标签: spring-mvc spring-boot thymeleaf

我想在Thymeleaf中验证我的表单输入,但我在视图中看不到错误消息。我可以在调试器模式下看到来自BindingResults的每条消息,我无法弄清楚为什么我在模板中看不到它。

这是我的控制器部分:

@RequestMapping(value = "/add-doctor", method = RequestMethod.POST)
public String addDoctor(@Valid @ModelAttribute("doctorForm") DoctorDTO doctorForm, BindingResult result, ModelMap model, RedirectAttributes redirectAttributes) {
    if (result.hasErrors()) {
        redirectAttributes.addFlashAttribute("doctorForm", doctorForm);
        return "redirect:/doctor/new-doctor";
    } else {
        doctorApplicationService.addNewDoctor(doctorForm);
    }
    model.addAttribute("doctorForm", doctorForm);
    return "redirect:/doctor";
}

这是我的表格:

<form method="post" th:action="@{/add-doctor}" th:object="${doctorForm}" id="docForm" class="form-horizontal">

                    <div class="form-group">
                        <label for="docNum" class="col-md-2 control-label">Number lekarza</label>

                        <div class="col-md-10">
                            <p type="text" class="form-control" id="docNum">PLXXX888</p>

                        </div>
                    </div>
                    <div class="form-group">
                        <label for="name" class="col-md-2 control-label">Imię</label>

                        <div class="col-md-10">
                            <input th:field="*{name}" type="text" class="form-control" id="name" placeholder="Imię"/>

                            <p th:if="${#fields.hasErrors('name')}"  th:errors="*{name}">Description errors</p>
                        </div>
                    </div></form>                                                                       

[编辑]

那是@m-deinum在评论中说:

  

因为您在发生异常时正在进行重定向。这会破坏模型,因此不会出现错误和消息

解决方案:

@RequestMapping(value = "/add-doctor", method = RequestMethod.POST)
public String addDoctor(@Valid @ModelAttribute("doctorForm") DoctorDTO doctorForm, BindingResult result, ModelMap model, RedirectAttributes redirectAttributes) {
    if (result.hasErrors()) {
        redirectAttributes.addFlashAttribute("doctorForm", doctorForm);
          return "doc-layout";
    } else {
        doctorApplicationService.addNewDoctor(doctorForm);
    }
    model.addAttribute("doctorForm", doctorForm);
    return "redirect:/doctor";
}

0 个答案:

没有答案
相关问题