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); } });