gpt4 book ai didi

java - zk框架内存网格

转载 作者:行者123 更新时间:2023-12-01 04:57:12 25 4
gpt4 key购买 nike

我使用zk框架MVVM接近并想要显示grid每页 1000-2000 行。(这确实是用户需要的)但是信息量很大,如果我保存我的 grid,每个用户将消耗大约 30Mb model ( List<Object> ) 在服务器端的内存中。我决定什么是好的,只需在服务器端呈现此类信息并清理内存,但如果我使用这种方法,我应该进行客户端编程。 (编写js进行ajax调用等)对于这个问题找不到好的解决方案。我应该使用什么auRequest , RowRenderRender script在客户端还是渲染网格后只是空数据?

UPD: ZUL

<grid apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('Pojo')"
self="@define(content)" height="100%" width="100%">
model="@load(vm.o)" emptyMessage="${c:l('empty_table')}"
stubonly="true" onCreate="@command('clear')">
<columns>
...cols...
</columns>
<template name="model">
<row>
<label value="@load(each.data)" />
</row>
</template>
</grid>

JAVA:

 public class Pojo {

private List<Object> o;
private Grid g;

@Init
public void init(){
o = loadFromDaoOneHundredItems()
}

@AfterCompose
public afterCompose(@ContextParam(ContextType.VIEW) Component view){
g.setPageSize(1000);
}
}

UPD

    final Rows rs = new Rows();
for (int i = 0; i < 1000; i++) {
final Row r = new Row();
r.appendChild(new Label("sdf"));
r.appendChild(new Label("sdf"));
r.appendChild(new Label("sdf"));
rs.appendChild(r);
}
grid.appendChild(rs);
ListModelList<Object> o = null;
grid.setModel(o);

最佳答案

ZK 提供了多种方法来处理您的逻辑客户端。
首先您应该阅读communication part of the client-side zk manual .
另外,this awnser应该会有帮助。

您应该知道,model="@load(vm.o)" 调用 Grid.setModel(...)
并保存一个引用,这样数据就不会被javas gc删除。

所以我认为解决这个问题的唯一方法是仍然使用 MVVM,即使它
据我了解 MVVM 打破模式,将调用

onCreate="@command('createRows',grid=self)"

并添加一个类似的方法

@Command("createRows")
public void createRows(@BindingParam("grid") Grid grid){
//add rows manually here
}

但我不得不说,对于你的任务,我更愿意使用 ZK MVC,
java的cos更好的可读性/可维护性和更多的控制cos。

关于java - zk框架内存网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13904509/

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