2009-11-18 25 views
3

我們目前正在尋找一個java框架,它在服務器端輕鬆進行驗證,客戶端,Spring,Hibernate,Play是我們正在搜索的框架選擇,我們使用基於註釋的開發,並且此框架將確定我們的javascript在客戶端和服務器端的驗證操作中,哪個更好的架構(體系結構)?哪個java web框架可供客戶端和服務器端驗證選擇?

回答

4

客戶端驗證(假設「客戶端」,你的意思是基於JavaScript的)是一個神話。它使一個更好的用戶界面 - 沒問題 - 但它不能被稱爲「驗證」,因爲什麼來自客戶端不能被認爲有效;直到它在服務器上被驗證。

服務器端驗證是不是一個整體件或者 - 至少有3個分量到它:

  1. 數據存儲約束(例如不爲空,最大長度,唯一性,參照完整性,等等在數據庫級別指定)。
  2. 域模型驗證(確保你的實體是有效的)
  3. 客戶端輸入驗證(UI,並以較小的程度上,基於API - 驗證)

很可能從#2派生#1 - Hibernate Validatior做假設你使用Hibernate作爲你的JPA提供者,這是一個出色的工作。

也可以從#3派生客戶端檢查。如果您打算使用GWT,那麼使用Jeff推薦的GWT VF是一種很好的方法,因爲它基於與Hibernate Validator相同的規範(JSR-303)。如果您打算使用其他的東西,那麼從代碼生成必要的scriptlet或基於XML的驗證規則編寫代碼是相當簡單的。過去我已經爲ExtJS控件完成了它。

最大的問題是橋接#2和#3 - 同一個域實體可能由UI中的許多不同視圖表示,每個視圖都有自己的驗證規則;所述驗證規則可以根據實體狀態和動態變化等條件進行。AFAIK除非你的UI是非常簡單的1對1 CRUD類型,否則沒有好的方法可以自動完成。

-1

我會說Spring框架是最好的。我們一直在使用Spring-Hibernate組合。

+0

需要更多信息 – Timeless

2

添加到ChssPly76,您可以直接在您的用戶界面中使用Hibernate驗證(或上一版本中的javax.validation)註釋實體,如果您使用RichFaces,也會自動應用相同的驗證規則。它有一個名爲beanValidator的組件,它讀取上述註釋。

與GWT不同,RichFaces(和JSF)允許使用更多的文檔樣式的網頁,而不是應用程序樣式。

5

新的Spring 3(它在RC2,很快就會定稿)在與Hibernate匹配時有很多好處可以幫助你的事業。綁定用戶輸入後驗證模型是很常見的。 Spring 3爲使用JSR-303的聲明性驗證提供支持。如果您的類路徑中存在JSR-303提供程序(如Hibernate Validator),則會自動啓用此支持。當啓用時,可以簡單地通過註釋一個控制器方法參數與@Valid註釋觸發驗證:

@RequestMapping(value = "/appointments", method = RequestMethod.POST) 
public String add(@Valid AppointmentForm form, BindingResult result) { 
    .... 
} 

public class AppointmentForm { 

    @NotNull @Future 
    private Date date; 
} 

結合傳入POST參數之後,AppointmentForm將被驗證;在這種情況下,要驗證日期字段值不爲空,並且將來會發生。

因此,這使得您的域模型的驗證變得非常簡單,您可以自由地在前端使用任何Javascript庫,無論是Jquery還是Extjs等。我已經在Spring中廣泛使用了Extjs的小部件,缺乏靈活性,期望Jquery和其他任何事情的相同。還有Spring-js,您可以查看並評估其用例的優點。

+0

你可以給一些更多的細節,我創建了具有名稱,郵件,文本字段的表單對象類然後我創建formcontroller使用有效的註釋,我couldnt理解如何實現,並與形式使用它。 –

+0

@Burak:你應該得到你需要的東西http://static.springsource.org/spring/docs/3.0.0.RC2/spring-framework-reference/html/ch05s07.html –

0

你也可以用ajaxical醬找一個JSF組件庫。然而,他們大多隻做服務器端驗證,但使用ajax。例子是RichFaces(也包括在Seam),PrimeFacesIceFaces