我是GWT新手。表單驗證有什麼好的解決方案?如果可能的話,我想避免自己滾動。使用Google Web Toolkit進行表單驗證?
11
A
回答
6
GXT和SmartGWT(我強烈建議,兩者都有很多原因)都有表單驗證。
GWT的編輯器框架提供的平均顯示javax.validation.ConstraintViolation
(你仍然必須通過實施HasEditorErrors
接收錯誤的某一領域做實際的顯示;編輯框架僅分派錯誤到適當的「田」)但沒有什麼可以在客戶端驗證。最近發佈的GWT 2.3已經在客戶端對JSR 303 Bean Validation進行了初步支持,但它尚未完成:http://code.google.com/p/google-web-toolkit/wiki/BeanValidation 我認爲GWT 2.4將有完整(或幾乎完整)的支持。
請注意,GWT在驗證方面的權益是驗證對象,而不是驗證編輯對象屬性的「表單域」。
8
在我的GWT應用程序中,我總是使用我的自定義驗證器類。我創建了我自己的文本框類,它擴展了gwt文本框。我調用CustomTextBox而不是gwt的文本框。
CustomTextBox.java
public class CustomTextBox extends TextBox implements HasValidators{
private static final String TEXTBOX_VALIDATION_ERROR_STYLE = "error-text-box";
private String errorMessage = "";
private List<Validator> validators = new ArrayList<Validator>();
public CustomTextBox() {
}
public CustomTextBox(String name) {
setName(name);
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public void addValidator(Validator validator) {
validators.add(validator);
}
public boolean validate() {
boolean validationResult = true;
for (Validator validator : validators) {
validationResult = validator.validate(getValue().trim());
if (!validationResult) {
errorMessage = validator.getErrorMessage();
break;
}
errorMessage = validator.getErrorMessage();
}
setErrorStyles(validationResult);
return validationResult;
}
private void setErrorStyles(boolean validationResult) {
if (validationResult) {
removeStyleName(TEXTBOX_VALIDATION_ERROR_STYLE);
setTitle("");
} else {
addStyleName(TEXTBOX_VALIDATION_ERROR_STYLE);
setTitle(errorMessage);
}
}
@Override
public void setValue(String s) {
removeStyleDependentName(TEXTBOX_VALIDATION_ERROR_STYLE);
super.setValue(s);
}
@Override
public String getValue() {
return super.getValue().trim();
}
}
Validator.java
public abstract class Validator {
public String errorMessage;
public abstract boolean validate(String value);
public abstract String getErrorMessage();
}
樣品電子郵件驗證
public class EmailValidator extends Validator {
public boolean validate(String value) {
if (value.matches("^[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")) {
errorMessage = "";
return true;
} else {
errorMessage = "Enter valid email Id";
return false;
}
}
public String getErrorMessage() {
return errorMessage;
}
}
我的驗證錯誤看起來像下面
如果你喜歡這個方法,你可以按照這個。這裏的問題是我們不直接在UI中顯示錯誤消息。只有在我們展示的工具提示中。
5
目前,我們正在使用這個項目的形式驗證: http://code.google.com/p/gwt-validation/
這是作爲新的GWT 2.4驗證框架的基礎源代碼。
克里斯布法羅一直在做這個項目的驚人的工作。爲我們開箱即用。
相關問題
- 1. 使用Web表單進行jQuery驗證
- 2. 使用Google Web Toolkit進行jUnit測試
- 3. 使用Abide進行表單驗證
- 4. 使用Mail html模板進行PHP表單+ Google reCAPTCHA驗證
- 5. 使用Jquery進行表單驗證
- 6. 使用JavaScript進行表單驗證
- 7. 使用jQuery-Ajax進行表單驗證
- 8. 使用javascript進行PHP表單驗證
- 9. 使用preg_match進行表單驗證
- 10. 使用jquery進行表單驗證
- 11. 使用Binder進行表單驗證
- 12. 使用PHP進行表單驗證
- 13. 使用codeigniter進行表單驗證
- 14. 使用函數進行表單驗證
- 15. 使用filter_var進行表單驗證
- 16. 使用Knockout進行表單驗證
- 17. 使用RJS Rails進行表單驗證
- 18. 使用jQuery進行表單驗證
- 19. 使用Javascript進行HTML表單驗證
- 20. 使用GUMP進行PHP表單驗證
- 21. 驗證使用asp.net進行多文件上傳C#web表單
- 22. 強制電子郵件驗證使用Google Identity Toolkit進行新註冊
- 23. 在Google Web Toolkit中使用Google Font API
- 24. Jquery表單驗證 - 使用if語句進行驗證?
- 25. 使用Web API進行身份驗證
- 26. Google Web Toolkit和RPC
- 27. Google Web Toolkit新手
- 28. Google Web Toolkit(GWT)+ XPath
- 29. 如何使用Google Identity Toolkit在iOS應用中驗證用戶?
- 30. 使用注入表單進行表單驗證Symfony2
爲什麼你會建議針對GXT和SmartGWT? – 2011-05-28 23:51:58
SmartGWT只是SmartClient的封裝,所以它不會從GWT編譯器所做的任何優化中受益。 GXT的體重過重(臃腫?),你在「Hello World」之後學到的第二件事是如何做一個「加載,請稍候」的初始屏幕(這是來自一本我被給予審查的書)。他們都沒有很好地集成GWT「本地」小部件(從我在線閱讀)。如果我想一點點,我相信我可以找到許多其他的理由。 – 2011-05-29 22:01:09
如果您能夠抵制使用SmartGWT或GXT的誘惑,您應該抵制它。 SmartGWT和GXT展示的外觀非常吸引人,但是當你想要執行MVP/MVC甚至簡單的驗證時,他們的技術/協議期望與GWT並不一致,並且變得非常混亂。最好使用普通的GWT,並減弱應用程序的審美期望,然後逐漸在CSS上工作。在開始審美之前先讓你的應用程序工作。不要讓SmartGWT或GXT轉移你的使命。如果它對谷歌來說很好,那麼它對你來說是一個很好的選擇。 – 2011-06-02 02:30:46