gpt4 book ai didi

java - SmartGWT - 重写 tranformRequest 和 transformResponse

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:05 24 4
gpt4 key购买 nike

我正在 GWT 中使用 SmartGWT 在 GAE 上编写一个项目。

我有一个带有对象的数据库,每个对象都有一个“父亲”对象和“儿子”,我使用 TreeGrid 来表示它们。我已经有一个 GWT-RPC 服务来获取给定节点的子节点。

我现在需要的是以某种方式扩展 DataSource 类 s.t 当打开树节点时,我将能够使用我自己的服务来获取它的儿子 - 然后将它们作为 TreeGrid 可以使用的东西返回。

我知道我应该重写transformRequest和transformResponse,但我不知道如何重写。任何代码示例/解释将不胜感激!

这是我到目前为止所得到的 - 不确定它是否正确:

              budgetTree.setDataSource(new DataSource() {

@Override
protected Object transformRequest(final DSRequest dsRequest) {

expensesService.getExpensesByYear(2008,
new AsyncCallback<ExpenseRecord[]>() {

@Override
public void onSuccess(ExpenseRecord[] result) {
System.out.println("Returned " + result.length + " expense record ");
dsRequest.setAttribute("dsResult", result);
}

@Override
public void onFailure(Throwable caught) {
System.out.println("Failed to run query");
}

});

return dsRequest;
}

@Override
protected void transformResponse(DSResponse response, DSRequest request,
Object data) {
Record[] recs = request.getAttributeAsRecordArray("dsResult");
response.setData(recs);
super.transformResponse(response, request, data);
}


});

最佳答案

由于您自己执行实际请求,因此您首先需要查看setDataProtocol(DSProtocol.CLIENTCUSTOM);

然后在 onSuccessonFailure 中,您需要调用 processResponse() ,它将调用 transformResponse()

public class MyDatasource extends DataSource{
public MyDatasource(){
setDataProtocol(DSProtocol.CLIENTCUSTOM)
}

@Override
protected Object transformRequest(final DSRequest dsRequest) {

expensesService.getExpensesByYear(2008,
new AsyncCallback<ExpenseRecord[]>() {

@Override
public void onSuccess(ExpenseRecord[] result) {
DSResponse response = new DSResponse();
System.out.println("Returned " + result.length + " expense record ");
dsRequest.setAttribute("dsResult", result);
Record[] recs = request.getAttributeAsRecordArray("dsResult");
response.setData(recs);
processResponse(dsRequest.getRequestId(), dsResponse);
}

@Override
public void onFailure(Throwable caught) {
DSResponse response = new DSResponse();
System.out.println("Failed to run query");
processResponse(dsRequest.getRequestId(), dsResponse);
}

});

return dsRequest;
}

}

关于java - SmartGWT - 重写 tranformRequest 和 transformResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com