java - 字段已正确验证,但视图中未显示错误
问题描述
我在视图(html 页面)上显示错误时遇到问题。
表格看起来像这样(为了清楚起见,只显示了一个字段):
<form action="#" th:action="@{addinvoice}" th:object="${invoicedata}" method="post">
<ul class="form-style-1">
<li>
<label>Data odbioru<span class="required">*</span></label>
<input type="date" th:field="*{receptionDate}" id="receptionDate">
<span th:if="${#fields.hasErrors('receptionDate')}" th:errors="*{receptionDate}">Error.</span>
</li>
然后我有一个自定义 javax Validator
:
@Component
public class InvoiceFormValidator implements Validator {
@Override
public boolean supports(Class<?> clazz) {
return InvoiceData.class.equals(clazz);
}
@Override
public void validate(Object target, Errors errors) {
ValidationUtils.rejectIfEmpty(errors, "receptionDate", "Reception date is empty!");
InvoiceData invoicedata = (InvoiceData) target;
if (invoicedata.getReceptionDate() == null) {
errors.rejectValue("receptionDate", "Reception date cannot be empty!");
}
}
}
验证加倍,因为我想 100% 确定它正在正确验证。
现在对于这Controller
部分,它看起来像这样(为了清晰起见,删除了其余代码)
@RequestMapping(value = "/addinvoice", method = RequestMethod.POST, produces = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String addInvoice(@CurrentUser Contractor contractor, @ModelAttribute @Validated InvoiceData invoicedata, BindingResult result, Model model, RedirectAttributes attr) {
if (result.hasErrors()) {
logger.error("BINDING RESULT ERROR: " + result.getAllErrors().toString());
logger.error("ERROR: " + result.getFieldError("receptionDate").getCode());
attr.addFlashAttribute("org.springframework.validation.BindingResult.invoicedata", result);
attr.addFlashAttribute("invoicedata", invoicedata);
model.addAttribute("invoicedata", invoicedata);
model.addAttribute("bindingResult", result);
return "add";
现在,当我发送不带 的表单时receptionDate
,我从 Logger 收到了一条漂亮的线路:
ERROR: Reception date is empty!
所以它被正确验证。
但我已经尝试了很多东西,我什至无法接近展示这条线:
<span th:if="${#fields.hasErrors('receptionDate')}" th:errors="*{receptionDate}">Error.</span>
我究竟做错了什么?我已经在 Web 上的几个不同页面上看到了这个问题的解决方案,构造:${#fields.hasErrors()}
随处使用,每个人都在使用addFlashAttribute
,但在我的情况下它不起作用。
解决方案
推荐阅读
- python - 分类 - 获取准确的标签值以检查与另一个类的接近程度(Python)
- wordpress - Polylang 无法识别来自重复页面插件的内容
- c# - 在“创建视图”中将 EF 模型传递给视图显示了 @HTML.Editfor 但不是 @HTML.Dropdown 的验证消息?ASP.NET MVC
- javascript - 如果我们有一个属性,如何反转一个数组?
- python - 我应该在 openCV 中使用什么 HSV 颜色范围来滤除蓝色像素?
- dialogflow-es - Twitter dialogflow 开源集成
- javascript - 从 javascript/Ajax 调用 Laravel 函数 - Dropzone.js & Laravel
- javascript - 如何在嵌套(猫鼬)回调中更改 json 值
- firebase - Firebase 安全规则:`if false` 是可选的吗?
- google-apps-script - 更新谷歌表单