2010-06-18 44 views
2

我試圖得到一個Spring 3.0.2 WebMVC項目與新的註釋驗證支持運行。我有註解這樣一個Hibernate實體:Spring 3 MVC驗證BindingResult不包含任何錯誤

@Entity 
@Table(name = "client") 
public class Client implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Basic(optional = false) 
    @Column(name = "clientId", nullable = false) 
    @NotEmpty 
    private Integer clientId; 

    @Basic(optional = false) 
    @Column(name = "firstname", nullable = false, length = 45) 
    @NotEmpty 
    @Size(min=2, max=45) 
    private String firstname; 

    ... more fields, getters and setters 
} 

我打開MVC註解支持我applicationContext.xml文件:

<mvc:annotation-driven /> 

而且我在我的控制器的方法來響應一個表單提交:

@RequestMapping(value="/addClient.htm") 
public String addClient(@ModelAttribute("client") @Valid Client client, BindingResult result) { 
    if(result.hasErrors()) { 
     return "addClient"; 
    } 
    service.storeClient(client); 
    return "clientResult"; 
} 

在服務器中我的應用程序加載時,我可以在服務器日誌文件中看到,它加載驗證:

15 [http-8084-2] INFO org.hibernate.validator.util.Version - Hibernate Validator 4.0.2.GA 

我遇到的問題是驗證程序似乎沒有啓動。我打開調試程序,當我進入控制器方法時,BindingResult在提交空表單後包含0個錯誤。 (BindingResult確實顯示它包含Client對象作爲目標。)然後它繼續插入沒有Id的記錄並引發異常。如果我填寫了一個Id,但將該名稱留空,它會創建一個帶有Id和空字段的記錄。

我錯過了哪些步驟來驗證工作?

回答

1

<mvc:annotation-driven />應該在...-servlet.xml而不是在applicationContext.xml

+0

謝謝,就是這樣。我仔細檢查了文檔,仍然找不到指定哪個文件應該進入的任何內容。 – Travelsized 2010-06-21 13:55:21

相關問題