javagwtbean-validationgwt-editors

How to implement GWT Editor with sub-editors


I am trying to create a GWT Editor for a bean Object, which has two fields of another Object type, therefore I want sub-editors for those fields. The problem is that I am quite new to the editors framework, and I don't really get the idea of all those Editor interfaces out there. Please advise of the best solution. My ideas were the following: using drivers of sub-editors to pass data to main editor driver; or use some sort of CompositeEditor (but I didn't know what to do with overridden methods...). Here's a sample code:

public class A {

    String s1, s2;
    Integer i;
    Double d;
    B ba, bb;

}

public class B {

    BigDecimal a, b;
}

//sub-editor
public class BEditor extends Composite implements Editor<B> {

    interface BDriver extends BeanEditorDriver<B, BEditor> {
    }

    //implements HasEditorErrors interface
    ValueBoxEditorDecorator<BigDecimal> a, b;
}

//main editor
public class AEditor extends Composite implements Editor<A> {

    interface ADriver extends BeanEditorDriver<A, AEditor> {
    }

    private ADriver driver = GWT.create(ADriver.class);

    ValueBoxEditorDecorator<String> s1, s2;
    ValueBoxEditorDecorator<Integer> i;
    ValueBoxEditorDecorator<Double> d;
    BEditor ba, bb;

    public AEditor() {
        driver.initialize(this);
        driver.edit(new A());
    }

    //called when the editor form is submitted
    public void onSubmit() {

        driver.clearErrors();
        A a = driver.flush();
        // A has both B fields = null
        // AEditor successfully displays validation errors, 
        // but BEditors do not display errors, nor does 
        // ADriver get any errors from BEditor
    }  
}

}


Solution

  • When you create the VehiculeDTO, also create B subclasses :

    A a = new A();
    a.setBa(new B());
    a.setBb(new B());
    driver.edit(a);