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

shx

我正在分析spring-mvc-showcase示例项目(spring-mvc-showcase github)。当我输入错误的日期格式(屏幕截图上的“出生日期”字段)时,与验证响应在JSP页面上呈现的方式相混淆。如何在不使用那些ConversionFailedException详细信息的情况下使用一些自定义消息使它更加用户友好?

屏幕截图:

在此处输入图片说明

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

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";            
    }
}
帕维尔·霍拉尔(Pavel Horal)

请注意,您正在此处处理绑定错误它们在实际的JSR-303验证执行之前就已抛出,并且它们覆盖了失败字段的JSR-303约束违规。

绑定错误的代码为typeMismatch因此,您可以在邮件属性中添加以下示例:

typeMismatch.birthDate = Invalid birth date format.

检查JavaDoc中的DefaultMessageCodesResolverDefaultBindingErrorProcessor以发现Spring的错误代码解析的工作方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义验证失败

来自分类Dev

如何基于注释属性创建自定义验证消息?

来自分类Dev

AngularJS自定义表单验证错误消息

来自分类Dev

表单验证规则不呈现自定义消息

来自分类Dev

AngularJS自定义表单验证错误消息

来自分类Dev

jQuery表单URL验证自定义消息

来自分类Dev

CFWheels:表单验证自定义错误消息

来自分类Dev

@Security注释的自定义消息

来自分类Dev

Symfony自定义身份验证提供程序失败消息

来自分类Dev

Keycloak自定义验证输出消息

来自分类Dev

Laravel自定义验证消息

来自分类Dev

Laravel中的自定义验证消息

来自分类Dev

jQuery自定义验证消息

来自分类Dev

Spring自定义验证消息

来自分类Dev

Codeigniter自定义验证消息?

来自分类Dev

Laravel扩展验证自定义消息

来自分类Dev

laravel上的自定义验证消息

来自分类Dev

jQuery自定义验证消息

来自分类Dev

角度ngMessages自定义消息验证

来自分类Dev

Laravel自定义验证消息

来自分类Dev

将自定义消息身份验证代码从Java转换为JavaScript

来自分类Dev

自定义`AuthenticationStateProvider`验证失败

来自分类Dev

我的自定义值转换器导致XAML验证工具失败

来自分类Dev

Spring Boot-表单上的自定义验证注释不起作用

来自分类Dev

基于休眠验证器中的验证失败,自定义验证器是否可以有多个消息?

来自分类Dev

Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

来自分类Dev

带参数的自定义验证器

来自分类Dev

JQuery在多个位置(表单顶部和表单级别)验证自定义错误消息

来自分类Dev

Symfony表单价格字段-带消息的自定义断言