2012-12-16 39 views
1

我使用zk框架MVVM的方法,并希望显示grid每页1000-2000行(这真的需要用户)但它是很多的信息,每个用户将消耗大约30Mb,如果我会将我的gridmodelList<Object>)保存在服务器端的内存中。我决定在服务器端渲染这类信息并清理内存,但如果我使用这种方法,我应该去客户端编程。 (为jjax调用写js等) 找不到这个问题的好解决方案。我应该在客户端使用auRequestRowRenderRender script,或者在渲染网格之后使用空数据?zk框架内存网格

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); 
+0

请先提供验证码。其次,2000行如何同时显示?你使用ZK CE还是PE/EE?这些数据是什么样的?不同的用户需要加载不同的数据吗?如果没有,你应该缓存你的数据(如果只有很小的差异必须单独保存,那么也一样)。 –

+0

我添加伪代码,是2000行,这是可怕的,但可以。我使用免费版本的ZK。我认为是CE。数据POjO'String'和'int'。是的每个用户需要加载不同的数据。我想只输出像'php'中的'html'。并通过JS发送AJAX或通过auRequests。但我找不到教程。官方zk切成块。很难理解它。谢谢。 – Mrusful

回答

0

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

你应该知道,model="@load(vm.o)"电话Grid.setModel(...)
并保存参考,这样的数据不会被GC的Java类中删除。

因此,我认为唯一的办法仍用MVVM来解决这个问题,即使它
断pettern因为据我所知MVVM,将调用

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

,并添加一个方法像

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

但我不得不说,你的任务,我会更喜欢使用MVC ZK,更好的可读性/可维护性
COS和更多的控制因素的Java。

+0

我使用'setModel(null)'后,它从网格中删除所有行。我真的不需要服务器上的'2Mb'来处理25个'Row'实例。渲染后,模型中的Pojo类也很好。 – Mrusful

+0

我编辑了这部分,但我真的认为你最好使用MVC。 –

+0

我更新了你的建议,但仍记忆犹新。我在YourKit中看到。行和行和标签。根GC引用到DesktopImpl - > Cache的zk。你能解释一下MVC方法吗?我问这是因为我认为你使用什么方法。核心仍然是一样的。 – Mrusful