Статьи

Реализация Load-on-Demand с использованием ZK и Grails

Эта статья предназначена для реализации приложения загрузки по требованию в 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