【发布时间】:2023-04-22 18:07:01
【问题描述】:
我很难理解应该如何编写我的 Service 类以使用 RequestFactory 实现 GXT 分页
我按照Demo site中提供的示例,以及Sencha网站中提供的javadoc example,但都未能完全理解。
首先让我们说我的 Service 正在返回 List<Data>(Data 是服务器 POJO),需要以分页方式加载。
这是我的服务类,它暴露了一个分页方法
class BackendService {
public List<Data> getData(int pageNumber, int pageSize) {
int f = pageNumber * pageSize;
int l = f + pageSize;
if(f > 0 && l < datas.size()) {
return datas.subList(f, l);
}
return null;
}
}
RequestFactory 看起来像这样
@Service(value=BackendService.class, locator=BackendServiceLocator.class)
interface BackendRequestContext extends RequestContext {
Request<List<DataProxy>> getData(int pageNumber, int pageSize);
}
BackendRequestContext context();
}
分页Grid 期望DataProxy 实现如下
DataProxy<PagingLoadConfig, PagingLoadResult<com.emc.test.client.model.DataProxy>> proxy = new RequestFactoryProxy<PagingLoadConfig, PagingLoadResult<com.emc.test.client.model.DataProxy>>() {
@Override
public void load(PagingLoadConfig loadConfig, Receiver<? super PagingLoadResult<com.emc.test.client.model.DataProxy>> receiver) {
int pageNum = loadConfig.getOffset();
int pageSize = loadConfig.getLimit();
Request<List<com.emc.test.client.model.DataProxy>> request = backendRequestFactory.context().getData(pageNum, pageSize);
request.fire(receiver);
}
};
在上述load方法中,这一行给出编译错误
request.fire(receiver);
因为Receiver应该是
Receiver<? super PagingLoadResult<com.emc.test.client.model.DataProxy>>
谁能帮我解决一下
- 我应该如何实现服务方法?
- 我是否应该从服务本身返回
PagingLoadResult而不是List?如果是怎么办?
感谢您抽出宝贵时间参与此主题!
【问题讨论】:
标签: java gwt gxt requestfactory