Information on GWT-Plus

GWT-Plus is an addon module to GWT-Ext.

Here are the high level features of the Store / GWT-RPC integration :

With this functionality you'll be able to specify your GWT-RPC service API that returns a list of domain beans / DTO's and load it into a Store which can be used to display data in a Grid, ComboBox or a Form. If you're using an EditableGrid, any modifications to the data will be reflected in your underlying data beans. You can retrieve the modified beans by calling Store#getModifiedRecords() and then make a GWT-RPC call to persist the changes. Sorting / Paging and Filtering of Grid data is also greatly simplified as the table sort / page / filter parameters are made accessible to your service and you can have your backend return data based on these parameters / criteria.

The GWT-Plus package presently ships with a few samples :

The examples will grow over time to include master - detail tables, related combos etc. and I will post updates.

Buy GWT-Plus

You can find information on purchasing GWT-Plus here.

Below is some sample code illustrating the usage of GWT-Plus Store / RPC integration that should give you a good idea of how things work.

final MyServiceServiceAsync myservice = ...

BeanProxy proxy = new BeanProxy(new RemoteLoader() {
            public void load(AsyncCallback callback, FetchCriteria fetchCriteria) {
                   //your application service API call,
                   //for example

//here Person class is your Bean class.
BeanAdapter beanAdapter = (BeanAdapter) GWT.create(Person.class);

//either get a generated RecordDef with all the bean properties
RecordDef recordDef = beanAdapter.getRecordDef();

//or simply create on yourself as usual explicilty listing the properties
RecordDef recordDef  = new RecordDef(new FieldDef[]{
                new StringFieldDef("name"),
                new StringFieldDef("birthday"),
                new StringFieldDef("state", " person.address.state")  //can also bind nested properties

BeanReader reader = new BeanReader(beanAdapter, recordDef);

final Store store = new Store(proxy, reader);
store.addStoreListener (new StoreListenerAdapter() {
    public void onLoad(Store store, Record[] records) {
        super.onLoad(store, records);
        Record record = records[0];
        record.set( "name", "sanjiv");
        //this is your server java bean
        Person bean = (Person) record.getDataAsObject();

    public void onLoadException(Throwable error) {
        //here you get any RPC related exception (eg any exception your service API may throw)

store.load ();	

Modifications made to the Records will be aware of underlying beans. So edits to rows in a grid will result in updates to the underlying bean. To find modified beans, call Store#getModifiedRecords(), iterate over each record and extract your Bean via record.getDataAsObject(). Then pass to server to save or whatever, and then call store#commit() as usual.


Please send mail to