Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用Spring Boot和Thymeleaf进行验证_Java_Spring_Validation_Spring Mvc - Fatal编程技术网

Java 无法使用Spring Boot和Thymeleaf进行验证

Java 无法使用Spring Boot和Thymeleaf进行验证,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我有一个Spring引导应用程序(使用版本1.2.3),其中有一个控制器显示一个表单。这一切都很好,但现在我想添加验证。我的控制器中有此方法: @RequestMapping(value = "/licensing", method = RequestMethod.POST) public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration, Model model, Bind

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

@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";
}
如果我现在键入了无效的内容,我在提交后会得到“白标签错误页”,并且方法中的断点永远不会被击中(如果我删除
@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似乎注意到对象无效,但它不会再次显示表单,这样用户就可以纠正错误。我做错了什么?

找到了原因为的答案。我必须将我的方法签名更改为:

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


请注意,
BindingResult
必须紧跟在我用
@Valid

注释的对象之后。在我的情况下,输入框的输入是错误的。实际上,我在输入框中输入了“-”特殊字符,这会引发相同的错误-对object='events'的验证失败。错误计数:5
我通过输入数字/字符串值解决了这个问题。

谢谢buddy的回答。我花了几个小时去了解问题所在,结果只是方法签名不匹配。为我工作。谢谢。:)当然我只是忘记了快乐:)谢谢:)这些都是让我在春天烦恼的事情哈哈哈,我的情况一切都很好,直到我将表单编码类型改为多部分。签名更改解决了这个问题。谢谢,教程链接已经失效
public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration, 
BindingResult bindingResult, 
Model model )