[英]Cannot get validation working with Spring Boot and Thymeleaf
我有一個帶有 1 個顯示表單的控制器的 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";
}
如果我現在輸入無效的內容,我會在提交后得到“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 似乎注意到該對象無效,但它不會再次顯示該表單,因此用戶可以修復他的錯誤。 我究竟做錯了什么?
由於教程here找到了答案。 我必須更改我的方法簽名:
public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration,
Model model,
BindingResult bindingResult )
到:
public String doRegistration( @Valid CustomerLicenseRegistration customerLicenseRegistration,
BindingResult bindingResult,
Model model )
注意BindingResult
必須緊跟在我用@Valid
注釋的對象之后。
在我的情況下,輸入框輸入錯誤。 實際上,我在輸入框中輸入了“-”特殊字符,這會引發相同的錯誤 - object='events' 驗證失敗。 錯誤計數:5 。 我通過輸入數字/字符串值來解決它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.