在为我创建的REST服务创建一个简单的客户端时,我注意到smartGWT的RestDataSource类在它可以理解的xml类型中受到限制。所有REST资源必须使用以下格式的XML进行响应。

<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>

..其中的唯一变体是someField / someOtherField标签。

此结构仅是名称/值对,对我们而言不起作用。

然后我在SmartGWT展示柜上看到了这个演示...

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

它显示了如何以任意格式使用xml进行显示,例如...
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();
    }

}

这对于GET有效,但是PUT,POST和DELETE如何?

任何人都可以共享一些代码或将我指向指向可演示如何从SmartGWT客户端执行其他RESTful操作的资源吗?

谢谢

最佳答案

使用OperationBindings:

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/DataSource.html#setOperationBindings%28com.smartgwt.client.data.OperationBinding...%29

您可以在每个CRUD操作的基础上控制要联系的URL,HTTP方法和许多其他功能。

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/DataSource.html#setDataURL(java.lang.String)

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/DataSource.html#setDataProtocol%28com.smartgwt.client.types.DSProtocol%29

请注意,要使用这些特定的HTTP动词(PUT和DELETE),请使用setRequestProperties和setHTTPMethod:

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/data/DataSource.html#setRequestProperties%28com.smartgwt.client.data.DSRequest%29

http://www.smartclient.com/smartgwtee/javadoc/com/smartgwt/client/rpc/RPCRequest.html#setHttpMethod%28java.lang.String%29

但是请注意,某些较旧的浏览器不支持这些动词。

关于java - 使用SmartGWT消费REST服务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3471260/

10-08 21:49