Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Grails翻译 - Load On-Demand大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一份按需加载数据的教程.

 

这一份ZKGrails程序发布在 http://docs.zkoss.org/wiki/Use_Load-On-Demand_to_Handle_Huge_Data. 本教程工作于ZKGrails 0.7.1或更高版本.


你需要为本教程准备一个Grails程序,输入:

$ grails create-app ondemand

下一步,你需要安装ZKGrails.当输入下面的命令最新的版本将会被自动安装:

$ grails install-plugin zk

你将使用一个域类@R_450_8750@yee去演示本插件.简单的使用create-domain-class命令在Grails中创建域类,并紧跟着你的类名:

$ grails create-domain-class @R_450_8750@yee

接着往@R_450_8750@yee中添加两个属性fullname的username类型为String.

@H_403_27@class @R_450_8750@yee { String fullname String username static consTraints = { } }


$ grails create-zul @R_450_8750@yee

这个命令同时为你创建一个 grails-apps/composers/@R_450_8750@yeeComposer.groovy 文件.
@H_403_27@ <window apply="${@R_450_8750@yeeComposer}">
  <vBox>
    <image src="images/grails_logo.jpg"/>
  </vBox>

  <listBox id="lstemployee" width="100%" checkmark="true">
    <listhead sizable="true">
      <listheader label="ID" sort="auto" />
      <listheader label="Full Name" sort="auto" />
      <listheader label="User Name" sort="auto" />
    </listhead>
  </listBox>
  <paging id="pag@R_450_8750@yee" pageSize="30" />

</window>

 

你可以在这代码看到两个属性lstemployee和pag@R_450_8750@yee.并都将注入到GenericForWARDComposer的子类GrailsComposer.它们在你的.zul文件中代表listBox和paging容器.


你可能注意到afterCompose闭包.这个闭包将通过doAfterCompose执行,并在Groovy里初始化你的容器.

任何时候点击pag@R_450_8750@yee换页,这个auto-wired事件处理器onPaging_pag@R_450_8750@yee将会执行.注,处理器工作需要的参数只能是ForWARDEvent或Event.

我同时使用Groovy的认参数声明了redraw方法,在afterCompose里调用redraw()就是redraw(0).
同样在redraw方法里,有两个地方使用了ZKGrail要里的动态方法.第一个是listBox#clear,这将移除所有的listitem.第二个是append,它将接受通过ZK Builder构造的容器.

 

@H_403_27@import org.zkoss.zkgrails.* import org.zkoss.zk.ui.event.* class @R_450_8750@yeeComposer extends GrailsComposer { def lstemployee def pag@R_450_8750@yee def afterCompose = { c -> pag@R_450_8750@yee.@R_644_10586@lSize = @R_450_8750@yee.count() redraw() } def onPaging_pag@R_450_8750@yee(ForWARDEvent fE) { def e = fe.origin redraw(e.activePagE) } def redraw(page=0) { def list = @R_450_8750@yee.list(offset: page * pag@R_450_8750@yee.pageSize,max: pag@R_450_8750@yee.pageSizE) lstemployee.clear() lstemployee.append { list.each { e -> listitem(value: E) { listcell(label: e.id) listcell(label: e.fullName) listcell(label: e.userName) } } } } }

首先在执行你的程序前,你需要一些展示的测试数据.打开grails-app/conf/BootStrap.groovy,并添加下面的代码到init闭包里.

@H_403_27@def init = { servletContext -> 1000.times { i -> new @R_450_8750@yee(fullname: "Name $i",username: "user$i").save() } }
上面的代码我执行1,000次循环去创建域类对象@R_450_8750@yee.

$ grails run-app
你的浏览器里输入http://localhost:8080/ondemand/@R_450_8750@yee.zul

大佬总结

以上是大佬教程为你收集整理的Grails翻译 - Load On-Demand全部内容,希望文章能够帮你解决Grails翻译 - Load On-Demand所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。