你需要为本教程准备一个Grails程序,输入:
$ grails create-app ondemand
下一步,你需要安装ZKGrails.当输入下面的命令最新的版本将会被自动安装:
$ grails install-plugin zk
你将使用一个域类Employee去演示本插件.简单的使用create-domain-class命令在Grails中创建域类,并紧跟着你的类名:
$ grails create-domain-class employee
接着往Employee中添加两个属性fullname的username类型为string.
class Employee {
String fullname
String username
static constraints = {
}
}
$ grails create-zul employee
<window apply="${employeeComposer}">
<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="pagEmployee" pageSize="30" />
</window>
你可能注意到afterCompose闭包.这个闭包将通过doAfterCompose执行,并在Groovy里初始化你的容器.
任何时候点击pagEmployee换页,这个auto-wired事件处理器onPaging_pagEmployee将会执行.注,处理器工作需要的参数只能是ForwardEvent或Event.
import org.zkoss.zkgrails.*
import org.zkoss.zk.ui.event.*
class EmployeeComposer extends GrailsComposer {
def lstEmployee
def pagEmployee
def afterCompose = { c ->
pagEmployee.totalSize = Employee.count()
redraw()
}
def onPaging_pagEmployee(ForwardEvent fe) {
def e = fe.origin
redraw(e.activePage)
}
def redraw(page=0) {
def list = Employee.list(offset: page * pagEmployee.pageSize,
max: pagEmployee.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闭包里.
def init = { servletContext ->
1000.times { i ->
new Employee(fullname: "Name $i", username: "user$i").save()
}
}
$ grails run-app

本教程介绍如何使用ZKGrails实现按需加载数据功能,适用于处理大量数据场景。通过创建Grails应用和安装ZKGrails插件,设置Employee域类并配置.zul界面文件,实现分页显示员工数据。
1万+

被折叠的 条评论
为什么被折叠?



