2011-05-12 18 views
5

¿Alguien ha notado cómo los editores y la validación jsr 303 funcionan con GWT 2.3 ? La API de validación se agregó a gwt sdk. Pero no puedo validar entidades que usan el marco editor. No importa qué haga los errores nunca se lanzan del lado del cliente o del servidor.GWT Validator with Editor Framework

Aquí es un fragmento de código:

public class P { 

    public P() {} 

    @Size(min=4) 
    private String name; 

    public void setName(String name) { 
    this.name = name; 
    } 

    public String getName() { 
    return name; 
    } 

} 

PEditor

public class PEditor extends Composite implements Editor<P> { 

    private static PEditorUiBinder uiBinder = GWT.create(PEditorUiBinder.class); 

    interface PEditorUiBinder extends UiBinder<Widget, PEditor> {} 

    @UiField 
    TextBox name; 

    public PEditor() { 
    initWidget(uiBinder.createAndBindUi(this)); 
    } 

} 

PEditor pEditor; 
    interface Driver extends SimpleBeanEditorDriver<P, PEditor> {} 

    Driver driver = GWT.<Driver> create(Driver.class); 

    public void onModuleLoad() { 

    pEditor = new PEditor(); 
    driver.initialize(pEditor); 
    P p = new P(); 
    driver.edit(p); 
    pEditor.name.setText("G"); 
    driver.flush(); 

    if(driver.hasErrors()) { 
     List<EditorError> errors = driver.getErrors(); 

     for (EditorError error : errors) { 
      System.out.println(error.getMessage()); 

     } 

    } 
    } 

Gracias por su ayuda

Respuesta

2

La API de validación, al menos a partir de 2.3, no genera código del lado del cliente para usted; es una herramienta que puede integrarse en el servidor para hacer que su servidor escuche errores en ciertos casos .

La llamada al EditorDriver.hasErrors() es solo para verificar si algún código le ha informado a los delegados locales si hay errores. La validación del lado del cliente puede implementarse a través de esto.

El caso más automático ahora es cuando se utiliza RequestFactory - si tiene javax.validation jar (tanto api como fuentes) en su servidor classpath así como una biblioteca de validación (hibernate-validator y apache's bval son dos de esas bibliotecas), la devolución de llamada del receptor tendrá onViolation llamado.

Con RequestFactory que se utilizan para obtener violaciónes desde el servidor, el RequestFactoryEditorDriver continuación, se puede utilizar para empujar los errores de la interfaz de usuario, aunque el uso de HasEditorErrors instancias del editor y envolturas, como ValueBoxEditorDecorator, o simplemente notificando al usuario a través de algún mecanismo (alerta, pancarta, su depuración sys.out.println, etc.) cuando se llama al onViolation.

Si usa RPC, puede ejecutar las validaciones del servidor por su cuenta y (a partir de 2.3) llamar al driver.setConstraintViolations con los objetos ConstraintViolation generados en el servidor desde el proceso de validación.

Cuestiones relacionadas