2010-08-12 4 views
4

Lors de la création d'un client simple pour un service REST que j'ai écrasé, j'ai remarqué que la classe RestDataSource de smartGWT est limitée dans le type de xml qu'elle peut comprendre. Toutes les ressources REST doivent répondre avec XML dans le format suivant ..Consommation de services REST avec SmartGWT

<response> 
    <status>0</status> 
    <startRow>0</startRow> 
    <endRow>10</endRow> 
    <totalRows>50</totalRows> 
    <data> 
     <record> 
      <someField>value</someField> 
      <someOtherField>value</someOtherField> 
     </record> 
     <record> 
      <someField>value</someField> 
      <someOtherField>value</someOtherField> 
     </record> 
     ... 
    </data> 
</response> 

.. où la seule variante est les balises somefield/someOtherField.

Cette structure, qui est un peu plus que des paires nom/valeur, ne va pas fonctionner pour nous.

Je vis alors cette démo sur la vitrine SmartGWT ...

http://www.smartclient.com/smartgwtee/showcase/#data_integration_server_rss

Ce qui montre comment consommer xml dans un format arbitraire pour l'affichage comme si ...

package com.smartgwt.sample.showcase.client.webservice; 

import com.smartgwt.client.data.DataSource; 
import com.smartgwt.client.data.fields.DataSourceTextField; 
import com.smartgwt.client.data.fields.DataSourceLinkField; 
import com.smartgwt.client.widgets.Canvas; 
import com.smartgwt.client.widgets.grid.ListGrid; 
import com.smartgwt.sample.showcase.client.PanelFactory; 
import com.smartgwt.sample.showcase.client.ShowcasePanel; 

public class RssSample implements EntryPoint { 

    public void onModuleLoad() { 
     DataSource dataSource = new DataSource(); 
     dataSource.setDataURL("http://rss.slashdot.org/Slashdot/slashdot"); 
     dataSource.setRecordXPath("//default:item"); 

     DataSourceTextField titleField = new DataSourceTextField("title", "Title"); 
     DataSourceLinkField linkField = new DataSourceLinkField("link", "Link"); 

     dataSource.setFields(titleField, linkField); 

     ListGrid grid = new ListGrid(); 
     grid.setAutoFetchData(true); 
     grid.setHeight(200); 
     grid.setWidth100(); 
     grid.setDataSource(dataSource); 

     grid.draw(); 
    } 

} 

Cette fonctionne bien pour GET, mais qu'en est-il des PUT, POST et DELETE?

Est-ce que quelqu'un peut partager du code ou me diriger vers une ressource qui montre comment faire d'autres opérations RESTful à partir d'un client SmartGWT?

Merci

Répondre