我是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. 使用baconjs进行表单验证
- 5. 使用Mail html模板进行PHP表单+ Google reCAPTCHA验证
- 6. 使用AJAX进行表单验证
- 7. 使用angularjs进行表单验证
- 8. 使用JavaScript进行表单验证
- 9. 使用SASS进行HTML表单验证?
- 10. 使用onblur进行表单验证
- 11. 使用javascript进行PHP表单验证
- 12. 使用rails进行表单验证
- 13. 使用Binder进行表单验证
- 14. 使用codeigniter进行表单验证
- 15. 使用jQuery-Ajax进行表单验证
- 16. 使用Bootstrap进行表单验证(jQuery)
- 17. 使用javascript进行xsl表单验证
- 18. 使用PHP进行表单验证
- 19. 使用jQuery进行表单验证
- 20. 使用filter_var进行表单验证
- 21. 使用函数进行表单验证
- 22. 使用PHP进行JQuery表单验证
- 23. 使用GUMP进行PHP表单验证
- 24. 使用Javascript进行HTML表单验证
- 25. 使用preg_match进行表单验证
- 26. 使用Knockout进行表单验证
- 27. 使用RJS Rails进行表单验证
- 28. 使用Jquery进行表单验证
- 29. 使用jquery进行表单验证
- 30. 使用Javascript进行Django表单验证
为什么你会建议针对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