Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    GWT-RPC with JSON

    Version: SmartGWT 2.2 with RPC extension

    I'm trying to implement a SmartGWT-RPC solution, but doing it a little differently by returning JSON back to the executeFetch instead of Java objects. It seems to work pretty well and my grid gets populated.

    Where it gets tricky, is when I need to navigate down the JSON using setValueXPath. Since I'm using GWT-RPC, I need to set DSProtocol.CLIENTCUSTOM in my datasource, and valueXPath doesn't seem to work.

    Does setValueXPath get ignored because I'm using ClientCustom and it expects me to process all data myself ?

    If so, is there a way I can still use GWT-RPC and valueXPath together ?


    Datasource:

    Code:
    public class LaborRateDS extends GwtRpcJsonDataSource {
    		
    	
    	public LaborRateDS() {
    		DataSourceField field;
    		field = new DataSourceTextField("id", "Id");
    		field.setPrimaryKey(true);
    		field.setHidden(true);
    		field.setRequired(false);
    		addField(field);
    
    		field = new DataSourceTextField("rateValue", "Rate Value");
    		field.setRequired(true);
    		addField(field);
    		
    		field = new DataSourceTextField("year", "Year");
    		field.setRequired(true);
    		addField(field);
    		
    		field = new DataSourceTextField("userId", "User Id");
    		field.setValueXPath("data/rateSheet/userId");
    		field.setRequired(true);
    		addField(field);
    		
    		field = new DataSourceTextField("effectiveDate", "Effective Date");
    		field.setValueXPath("data/rateSheet/effectiveDate");
    		field.setRequired(true);
    		addField(field);
    	}
    
    	@Override
    	protected void executeFetch(final String requestId,
    			final DSRequest request, final DSResponse response) {
    
    		String rateSheetId = request.getCriteria().getAttribute("rateSheetId");
    		System.out.println("rateSheetId=" + rateSheetId);
    		System.out.println("startRow=" + request.getStartRow());
    		System.out.println("endRow=" + request.getEndRow());
    		RateSheetServiceAsync service = GWT.create(RateSheetService.class);
    		service.fetchLaborRates(rateSheetId, new AsyncCallback<String>() {
    			@Override
    			public void onFailure(Throwable caught) {
    				caught.printStackTrace();
    				response.setStatus(RPCResponse.STATUS_FAILURE);
    				processResponse(requestId, response);				
    			}
    
    			@Override
    			public void onSuccess(String json) {
    
        			JavaScriptObject jsObj = JSON.decode(json);
        			
    				response.setJsObj(jsObj);
    				
    				processResponse(requestId, response);
    			}
    		});
    	}
    }
    JSON:

    Code:
    {
       "status":0,
       "startRow":0,
       "endRow":50,
       "totalRows":1344,
       "data":[
          {
             "id":"00BAB4AE-A48C-4288-AF40-BEA794370813",
             "laborGuid":"E31E5566-3662-4A2F-8218-59D15F123803",
             "rateIndexGuid":"4D5ECC96-8687-4000-9D22-8C33BD4D178C",
             "rateValue":"36.8700000000",
             "year":2010,
             "rateSheet":{
                "id":"4D5ECC96-8687-4000-9D22-8C33BD4D178C",
                "name":"Ver 026 - 08/19/10",
                "active":true,
                "effectiveDate":"Sep 8, 2010 6:08:45 PM",
                "userId":"BATCH",
                "businessUnit":"SAS"
             }
          },
          {
             "id":"011025D4-7C12-4828-AFA4-490BABA98BD6",
             "laborGuid":"CB3C58C0-3A1D-4366-872A-49669F28518C",
             "rateIndexGuid":"4D5ECC96-8687-4000-9D22-8C33BD4D178C",
             "rateValue":"46.8700000000",
             "year":2010,
             "rateSheet":{
                "id":"4D5ECC96-8687-4000-9D22-8C33BD4D178C",
                "name":"Ver 026 - 08/19/10",
                "active":true,
                "effectiveDate":"Sep 8, 2010 6:08:45 PM",
                "userId":"BATCH",
                "businessUnit":"SAS"
             }
          }
     
       ]
    }
    Attached Files
    Last edited by vutran320; 24 Sep 2010, 12:48.
Working...
X