gpt4 book ai didi

java - GXT - RequestFactory 与 Paging Grid 集成

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

我很难理解应该如何编写我的 Service 类,以便使用 RequestFactory 实现 GXT 分页

我按照 Demo site 中提供的示例进行操作,以及javadoc example Sencha 网站上给出了,但未能完全理解两者。

首先让我们假设我的服务正在返回 List<Data> ( Data 是一个服务器 POJO),需要以分页方式加载。

这是我的 Service 类,它公开了分页方法

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从服务本身?如果是的话怎么办?

感谢您花时间关注此话题!

最佳答案

您还需要一对扩展 PagingLoadResultBean/PagingLoadResult 的 dto 代理。

1)在后端部分您创建了以下 dto:

public class YourCustomPagingLoadResultBean extends PagingLoadResultBean<Data> {

protected YourCustomPagingLoadResultBean () {
}

public YourCustomPagingLoadResultBean (List<Data> list, int totalLength, int offset) {
super(list, totalLength, offset);
}
}

2)为此 dto 创建代理:

@ProxyFor(YourCustomPagingLoadResultBean.class)
public interface YourCustomPagingLoadResultProxy extends ValueProxy, PagingLoadResult<DataProxy> {
@Override
List<DataProxy> getData();
}

3) 更改您的服务以返回分页 bean:

public YourCustomPagingLoadResultBean getData(int pageNumber, int pageSize) {
...
return new YourCustomPagingLoadResultBean(list, totalLength, offset);
}

4) 请求也更改为:

Request<YourCustomPagingLoadResultProxy> getData(int pageNumber, int pageSize);

您正在使用的 DataProxy 看起来正确,您的分页网格将在这 4 个步骤之后工作。

关于java - GXT - RequestFactory 与 Paging Grid 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19925582/

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