Sample of MVP pattern

Basis

Schema

In practice

Grails provides a way to produce XML content quickly.

SmartGWT enhancement

DataSource object provided by SmartGWT is breakthrough compare to default interface provided by GWT.

Complete example

XML

XML/Content by Grails

 <list>
 	<item>
 		<field>Mike</field>
 		<class>com.unhook.mvp.Item</class>
 	</item>
 	<item>
 		<field>Brant</field>
 		<class>com.unhook.mvp.Item</class>
 	</item>
 </list>

Grails

grails create-controller com.unhook.controllerName
import grails.converters.XML
 
class ControllerNameController{
 
def action = {
 
List list = []
 
list.add "Mike"
list.add "Brant"
 
render list as XML
}
}

SmartGWT

// Select product and update Process List
comboBox1.addChangedHandler(new ChangedHandler() {
  public void onChanged(ChangedEvent event) {
      String value = (String) comboBox0.getValue();
/*
 * Create datasource
 */
DataSource ds = new DataSource(){
@Override
protected void transformResponse(DSResponse response,
		DSRequest request, Object data) {
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
for(Record record : this.recordsFromXML(XMLTools.selectNodes(data, "/list/item"))){
   String item =record.getAttributeAsString("field");
   SC.logWarn(item);
   map.put(item, item);
  }	
  object.setValue(map);
  }
};
ds.setDataURL("controllerName/action?parameter="+value);
ds.setDataFormat(DSDataFormat.XML);
ds.setClientOnly(false);
ds.fetchData();
 
// Enable cbl view
		enableView(product);
	}
});