2010-11-11 64 views
0

在GWT中驗證用戶輸入的最佳方法是什麼?是否有內置的輸入驗證支持?還是有任何外部框架來做到這一點?考慮到我在GWT中使用hibernate?在GWT中驗證用戶輸入?

感謝

+2

我希望你問這個問題只是爲了用戶反饋。只是一個友好的提醒,所有的實際驗證**必須在服務器端完成。客戶端檢查,以便您可以及時向用戶提供反饋是很好的,但他們並沒有刪除在服務器上檢查*所有*的需要。 – 2010-11-11 09:46:34

+0

@ Andrezej Doyle - 是否可以在客戶端禁用Javascript? – Sid 2010-11-11 10:41:01

+2

@SidCool用戶可以修改發送到服務器的任何呼叫,這就是爲什麼您不應該依賴客戶端驗證來保持數據一致性和安全性的原因。 – Knubo 2010-11-11 11:03:59

回答

1

可以存儲在一個「共享」包中的類寫靜態驗證檢查程序。然後,您可以在客戶端和服務器端使用相同的代碼。

0

既然你還沒有得到一個好的答案,我想分享我的意見與我已經看到GWT的驗證框架。

事情與框架是,他們往往盡力去完成兩件事情:

  • 他們想成爲非常普遍的。
  • 他們希望不侵入你的代碼。

這有時會成功,但大多數時候他們不會。編寫這樣一個框架會帶來成本,而這個成本就是你作爲該框架的用戶支付的成本。

在我看來,驗證應該很簡單。下面是我使用一些代碼,我放在一起是如何解決驗證的例子:

MasterValidator masterValidator = new MasterValidator(); 

    masterValidator.mandatory(messages.required_field(), lastnameBox, firstnameBox, genderBox); 

    if (birthdateRequired) { 
     masterValidator.mandatory(messages.required_field(), birthdateBox); 
    } 

    masterValidator.date(messages.date_format(), birthdateBox); 

    masterValidator.email(messages.invalid_email(), emailBox); 

    return masterValidator.validateStatus(); 

這裏每一個輸入框,從我的文本字段(或其他輸入類型)繼承和這些領域有一個錯誤的標籤,這將是如果驗證不成功則設置。

我並不是說這是完美的,但它可以簡單地完成工作。如果你想受到啓發/拿我的一些代碼,那麼請做。該代碼是託管在谷歌代碼一個GPL2許可的項目中使用:

http://code.google.com/p/accountclient/source/browse/#svn/trunk/RegnskapClient/src/no/knubo/accounting/client/validation

它採用客戶端/ UI爲好。