Эта статья предназначена для реализации приложения загрузки по требованию в ZK и Grails, чтобы помочь вам показать большое количество данных. Он демонстрирует быстрый способ создания приложения Ajax, сочетая мощь ZK и Grails.
Плагин ZK для Grails представляет режим GroovyGrails для платформы ZK . Он легко интегрирует ZK в стек Grails. Плагин выводит ZK и Grails на новый уровень быстрого развития RIA, а также с возможностями сверхконфигурации, Spring и Hibernate. Особенности:
- Доступ к классам домена Grails, классам транзакционных сервисов и множеству плагинов.
- Быстрое конструирование компонентов ZK с помощью синтаксиса ZK Groovy Builder, разработанного Гейбом Хиксом
- Автоматическая перезагрузка композиторов с помощью Spring bean. С плагином ZK вы можете использовать возможности MVC композиторов ZK при той же скорости разработки, что и при написании сценариев!
- Сценарии также полностью поддерживают артефакты Grails непосредственно в .zul.
- ZUL файл и композитор генераторы.
Ниже приведен порт ZKGrails программы, написанной в разделе
Использование нагрузки по требованию для обработки огромных данных . Этот учебник работает для плагина ZK для Grails 0.7.1 и новее.
Создать проект Grails
Вам нужно подготовить проект Grails для этого урока по типу:
$ grails create-app ondemand
Установить ZKGrails
Далее необходимо установить ZKGrails. Последняя версия будет установлена автоматически, когда наберете:
$ grails install-plugin zk
Создать класс домена
Я собираюсь продемонстрировать с простым классом домена, сотрудник. Чтобы создать класс домена в Grails, просто используйте команду create-domain-class , следующую за именем вашего класса:
$ grails create-domain-class employee
Добавление свойств для сотрудника
Затем я добавляю два свойства в класс домена Employee, а именно полное имя и имя пользователя. Оба строки.
class Employee {
String fullname
String username
static constraints = {
}
}
Создать страницу zul
Есть два генератора сценариев, поставляемых с ZK Plugin для Grails. Ниже показано, как запустить create-zul для создания web-app / employee.zul .
$ grails create-zul employee
Это также создаст для вас grails-apps / composers / EmployeeComposer.groovy .
Редактировать employee.zul
Хотя генератор создает для вас готовый zul-файл из шаблона, но это всего лишь скелет, с которым вам будет легче начать. Откройте web-app / employee.zul и удалите все коды ниже vbox , затем измените его следующим образом.
<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>
Конечно, ключевыми компонентами, которые будут использоваться в композиторе, являются lstEmployee и pagEmployee .
Редактирование EmployeeComposer
Из кода вы можете увидеть 2 свойства lstEmployee и pagEmployee . Оба внедрены GrailsComposer, который является подклассом ZK GenericForwardComposer. Они, по-видимому, представляют списки и компоненты подкачки из вашего .zul файла.
Вы можете заметить, что есть закрытие AfterCompose . Это закрытие выполняется в doAfterCompose , и это Groovy способ инициализации ваших компонентов.
Автоматический проводной дескриптор события onPaging_pagEmployee будет вызываться каждый раз, когда вы нажимаете pagEmployee, чтобы изменить активную страницу. Обратите внимание, что единственный аргумент обработчика должен быть ForwardEvent или Event, чтобы он работал.
Я также покажу вам использование значения аргумента Groovy по умолчанию, объявленного в методе перерисовки. То есть вызов redraw () в afterCompose означает redraw (0) .
Также в методе перерисовки есть два места для использования динамических методов, добавленных ZKGrails. Первый метод clear () — метод удаления всех элементов из списка. Второй — это append (), который принимает конструкцию компонента через ZK Groovy Builder.
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 , а затем добавьте следующий фрагмент в закрытие инициализации.
def init = { servletContext ->
1000.times { i ->
new Employee(fullname: "Name $i", username: "user$i").save()
}
}
С помощью приведенного выше кода мы зациклились 1000 раз, чтобы создать 1000 доменных объектов класса Employee.
Запустите приложение
$ grails run-app
и укажите ваш браузер на http: // localhost: 8080 / ondemand / employee.zul