Wim*_*uwe 23 java validation spring spring-mvc
我有一个Spring Boot应用程序(使用版本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";
}
Run Code Online (Sandbox Code Playgroud)
如果我现在键入一些无效的东西,我会在提交后得到"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
Run Code Online (Sandbox Code Playgroud)
Spring似乎注意到该对象无效,但它没有再显示该形式,因此用户可以修复他的错误.我究竟做错了什么?
Wim*_*uwe 65
由于这里的教程,找到了答案.我必须改变我的方法签名:
public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration,
Model model,
BindingResult bindingResult )
Run Code Online (Sandbox Code Playgroud)
至:
public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration,
BindingResult bindingResult,
Model model )
Run Code Online (Sandbox Code Playgroud)
注意在我注释的对象之后BindingResult必须立即执行@Valid.
| 归档时间: |
|
| 查看次数: |
22138 次 |
| 最近记录: |