【问题标题】:Cannot get validation working with Spring Boot and Thymeleaf无法使用 Spring Boot 和 Thymeleaf 进行验证
【发布时间】:2015-07-29 15:12:55
【问题描述】:

我有一个 Spring Boot 应用程序(使用版本 1.2.3),它带有 1 个显示表单的控制器。这一切都很好,但现在我想添加验证。我的控制器中有这个方法:

@RequestMapping(value = "/licensing", method = RequestMethod.POST)
public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration, Model model, BindingResult bindingResult )
{
    if( bindingResult.hasErrors())
    {
        logger.debug( "There are errors! {}", bindingResult );
        return "customer/license-registration";
    }
    logger.debug( "customerLicenseRegistration: " + customerLicenseRegistration );
    CustomerLicense customerLicense = m_licenseService.createCustomerLicense( customerLicenseRegistration );
    model.addAttribute( "customerLicense", customerLicense );
    return "customer/license-registration-done";
}

如果我现在输入无效的内容,我会在提交后得到“Whitelabel 错误页面”,并且我的方法内的断点永远不会被命中(如果我删除 @Valid 注释,断点会被命中)。错误页面显示:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon May 18 09:42:27 CEST 2015
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='customerLicenseRegistration'. Error count: 1

Spring 似乎注意到该对象无效,但它没有再次显示表单,因此用户可以修复他的错误。我做错了什么?

【问题讨论】:

    标签: java spring validation spring-mvc


    【解决方案1】:

    由于the tutorial here,找到了答案。我必须更改我的方法签名:

    public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration, 
    Model model, 
    BindingResult bindingResult )
    

    到:

    public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration, 
    BindingResult bindingResult, 
    Model model )
    

    注意BindingResult 必须在我用@Valid 注释的对象之后立即

    【讨论】:

    • 感谢朋友的回答。我花了几个小时来了解问题所在,它只是方法签名不匹配。为我工作。谢谢。 :)
    • 当然。我只是忘记了幸福:)
    • 谢谢 :) 这些是春天让我烦恼的事情哈哈哈
    • 在我的情况下一切正常,直到我将表单编码类型更改为多部分。签名更改解决了该问题。谢谢。
    • 教程链接失效了
    【解决方案2】:

    在我的情况下,输入框输入错误。实际上,我在 输入框 中输入了 "-" 特殊字符,这会引发相同的错误 -Validation failed for object='events'。错误计数:5。 我通过输入 numerical/String 值解决了它。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2019-06-14
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      相关资源
      最近更新 更多