簡體   English   中英

無法使用 Spring Boot 和 Thymeleaf 進行驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM