Soy nuevo en GWT. ¿Qué buenas soluciones existen para la validación de formularios? Me gustaría evitar rodar el mío si es posible.Validación de formulario con Google Web Toolkit?
Respuesta
GXT y SmartGWT (los dos recomendaría mucho, por muchas razones) tienen validación de formulario.
marco Editor de GWT proporciona un medio para visualizar javax.validation.ConstraintViolation
(que todavía tendría que hacer la pantalla real mediante la implementación de HasEditorErrors
para recibir los errores para un campo dado, el marco Editor sólo distribuye los errores a los "campos" apropiados) pero nada para validar en el lado del cliente.
El recientemente publicado, GWT 2.3 tiene soporte preliminar para JSR 303 Bean Validation en el lado del cliente, pero aún no ha terminado: http://code.google.com/p/google-web-toolkit/wiki/BeanValidation creo GWT 2.4 tendrá soporte completo (o casi completa).
Tenga en cuenta que la participación de GWT en la validación se basa en la validación de los objetos, no en la validación de los "campos de formulario" que editan las propiedades de un objeto.
En mis aplicaciones GWT siempre uso mis clases personalizadas de validador. Creé mi propia clase de cuadro de texto que amplía gwt textbox. Y llamo CustomTextBox en lugar de la caja de texto de 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();
}
Muestra de correo electrónico validador
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;
}
}
Mi error de validación parece siguiente
Si te gusta este enfoque puede seguir esto. El problema aquí es que no mostramos el mensaje de error directamente en la IU. Solo en la información sobre herramientas que mostramos.
está usando actualmente este proyecto para la validación de formularios: http://code.google.com/p/gwt-validation/
Se está el código fuente que sirve de base a la nueva GWT 2.4 Marco de validación.
Chris Buffalo ha estado haciendo un trabajo increíble en ese proyecto. Funciona de la caja para nosotros.
- 1. Google Web Toolkit (GWT) + XPath
- 2. ¿Qué framework Java funciona mejor con Google Web Toolkit?
- 3. Características ocultas de Google Web Toolkit 2
- 4. Creación de JSON en el servidor con Google Web Toolkit
- 5. ¿Debo usar Google Web Toolkit para mi nueva aplicación web?
- 6. Creación de aplicaciones en Google Web Toolkit, Opciones de alojamiento?
- 7. Es Google Web Toolkit similar a AWT y Swing
- 8. Google Web Toolkit (GWT) + Google App Engine (GAE) + Persistencia de datos separados
- 9. ¿Tiene sentido utilizar Google Web Toolkit (GWT) como un framework web completo de Java?
- 10. Validación de dirección con Google Maps API
- 11. Formulario de validación y ayudante de formulario
- 12. Validación de formulario
- 13. Zend formulario de validación
- 14. ASP.Net MVC formulario Ajax con validación jQuery
- 15. JQuery - Validación de formulario - Onblur
- 16. Validación de entrada de formulario con JAX-RS
- 17. ¿Alguien usa PL/SQL Web Toolkit?
- 18. QTP extensibilidad Web toolkit y ajax
- 19. ¿Existen propiedades de JavaScript relacionadas con la validación del formulario del navegador web en HTML5?
- 20. Guías para diseñadores de IU que trabajan en Google Web Toolkit
- 21. ¿Cómo incluir un contenedor externo en un proyecto de GWT (Google Web Toolkit)?
- 22. Depuración de una aplicación Google Web Toolkit que tiene un error cuando se implementa en Google App Engine
- 23. Formulario AJAX (utilizando simple_form) con preservación de validación de error
- 24. jQuery validación de un nombre de formulario con corchetes
- 25. jQuery UI Diálogo con complemento de validación de formulario
- 26. Django Validación de formulario de Javascript
- 27. ¿Cómo puedo agregar filas a un Google Web Toolkit flexible en UiBinder?
- 28. Formulario de contacto Ajax/PHP simple con validación
- 29. Codeigniter: Cómo redirigir correctamente con la validación de formulario
- 30. Formulario no enviado con la validación de jQuery
¿Por qué desaconseja GXT y SmartGWT? –
SmartGWT es solo un contenedor de SmartClient, por lo que no se beneficia de ninguna optimización realizada por el compilador de GWT. GXT es tan pesado (¿hinchado?) Que lo segundo que aprendes después de "Hello World" es cómo hacer una pantalla emergente de "carga, por favor espera" (esto es de un libro que me dieron para su revisión). Y ninguno de ellos se integra muy bien con widgets "nativos" de GWT (por lo que leo en línea). Y creo que podría encontrar muchas otras razones si lo pensara solo un poco. –
Si puede resistir la tentación de usar SmartGWT o GXT, debe resistirse. Las vitrinas SmartGWT y GXT hacen que su apariencia sea muy atractiva, pero cuando quieres realizar MVP/MVC o incluso validación simple, sus expectativas tecnológicas/de protocolo no coinciden con GWT y se vuelven muy confusas.Es mejor usar GWT simple y atontar la expectativa estética de su aplicación y luego trabajar gradualmente en CSS. Deje que su aplicación funcione antes de trabajar en la estética. No permita que SmartGWT o GXT lo desvíen de esa misión. Si es bueno enuf para google, es bueno enuf para ti. –