26

I have a Spring Boot application (using version 1.2.3) with 1 controller that shows a form. This all works fine, but now I want to add validation. I have this method in my controller:

@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";
}

If I now type something invalid, I get the "Whitelabel error page" after submit and my breakpoint inside the method is never hit (If I remove the @Valid annotation, the breakpoint does get hit). The error page shows:

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 seems to notice that the object is not valid, but it does not show the form again so the user can fix his mistake. What am I doing wrong?

2 Answers 2

78

Found the answer due to the tutorial here. I have to change my method signature from:

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

to:

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

Notice how the BindingResult has to be immediately after the object I have annotated with @Valid.

Sign up to request clarification or add additional context in comments.

6 Comments

Thanks buddy for answer. I put hours in understanding what was the problem and it came with just method signature mis match. Work for me. thanks. :)
sure. I just forgot in happiness :)
Thanks :) These are the things that annoy me in spring hahahah
In my case everything worked well until I changed form encoding type to multipart. The signature change resolved the issue. Thank you.
The tutorilal link is died
|
0

In my case it was wrong input to the input box. Actually i entered "-" special character in the input box which throws same error -Validation failed for object='events'. Error count: 5. I resolved it by entering numerical/String values.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.