gpt4 book ai didi

spring - 带注释的表单验证 - 转换失败自定义消息

转载 作者:行者123 更新时间:2023-12-02 09:52:24 28 4
gpt4 key购买 nike

我正在分析 spring-mvc-showcase 示例项目 ( spring-mvc-showcase github )。当我点击不正确的日期格式(屏幕截图中的出生日期字段)时,对 JSP 页面上显示的验证响应方式感到困惑。如何在没有那些 ConversionFailedException 详细信息的情况下使用一些自定义消息使其更加用户友好?

截图:

enter image description here

应用注释驱动的验证。下面是代表birthDate 字段的bean 类的代码段。

FormBean.java

@DateTimeFormat(iso=ISO.DATE)
@Past
private Date birthDate;

负责表单提交的方法:

FormController.java

@RequestMapping(method=RequestMethod.POST)
public String processSubmit(@Valid FormBean formBean, BindingResult result,
@ModelAttribute("ajaxRequest") boolean ajaxRequest,
Model model, RedirectAttributes redirectAttrs) {
if (result.hasErrors()) {
return null;
}
// Typically you would save to a db and clear the "form" attribute from the session
// via SessionStatus.setCompleted(). For the demo we leave it in the session.
String message = "Form submitted successfully. Bound " + formBean;
// Success response handling
if (ajaxRequest) {
// prepare model for rendering success message in this request
model.addAttribute("message", message);
return null;
} else {
// store a success message for rendering on the next request after redirect
// redirect back to the form to render the success message along with newly bound values
redirectAttrs.addFlashAttribute("message", message);
return "redirect:/form";
}
}

最佳答案

请注意,您在此处处理绑定(bind)错误。这些在执行实际 JSR-303 验证之前很久就会抛出,并且它们会覆盖失败字段的 JSR-303 约束违规。

绑定(bind)错误的代码为typeMismatch。因此,您可以将以下内容添加到您的消息属性中:

typeMismatch.birthDate = Invalid birth date format.

检查 JavaDoc 中的 DefaultMessageCodesResolverDefaultBindingErrorProcessor了解 Spring 的错误代码解析是如何工作的。

关于spring - 带注释的表单验证 - 转换失败自定义消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19083148/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com