2013-02-07 116 views
0

我即將在Spring 3.1中設置表單驗證。我使用的註解來驗證我的模型,像這樣:春季電子郵件表單驗證

型號:

@Column(name = "mailAddress", nullable = false) 
@Email 
private String mailAddress; 

@Column(name = "school", nullable = false) 
@NotBlank 
@Size(min = 3, max = 100) 
private String school; 

控制器:

@RequestMapping(value = "/add", method = RequestMethod.POST) 
    public String addBooking(
      @ModelAttribute("new-booking") @Valid Booking booking, 
      BindingResult result, Map<String, Object> model) { 

     if (result.hasErrors()) { 
      return "booking"; 
     } 
      return "success"; 
    } 

的問題是,它驗證了school但不是mailAddress。如果你輸入一個空的mailAddress它會接受它。

+2

是什麼問題? –

+0

@VarunAchar你是完全正確的。我似乎忘記了這一點。編輯。 – Robin

+0

什麼是mailAddress的輸入?它是針對每個案例進行驗證還是對每個案例都不合格? –

回答

0

我找到了問題。電子郵件驗證器將接受空白電子郵件。要解決這個問題,你只需要添加一個@NotBlank它。其實我認爲可空= false會足夠,但不是。

@Column(name = "mailAddress", nullable = false) 
@Email 
@NotBlank 
private String mailAddress; 
2

我認爲你的驗證問題可能與以下事實有關:使用@Email驗證註釋你的驗證器cosindered爲有效的電子郵件形式如:「myname @ service」,不以擴展名結尾(例如).COM

如果這是你的問題......這是正常的,因爲它也認爲你有具有以下格式的電子郵件的情況:提供yourname @本地(內部電子郵件地址)

如果您要驗證經典電子郵件(格式爲:[email protected]),我認爲您必須編寫自定義驗證器。

我希望我能理解你的問題

+0

謝謝,但它不會驗證電子郵件。我可以讓它保持空白,Controller沒有接受這個。 – Robin