Tapestry/Основные понятия
Страницы
правитьСтраницы (англ. pages) — под страницей в Tapestry понимают пару файлов: шаблон name.tml и контроллер страницы name.java, где name имя страницы и Java класса.
com.my.app.pages.Index — главная (индексная) страница com.my.app.pages.profile.Edit страница profile/Edit
Имена страниц в Tapestry не чуствительны к регистру (англ. case-insensitive), как и имена свойств, параметры, идентификаторы сообщений (англ. message keys), типы компонентов и др. |
Имена файлов в Tapestry чувствительны к регистру (англ. case-sensitive). Таким образом регистры классов и шаблонов должны совпадать. |
Все страницы запускаются в контексте OnActivate. Таким образом все переменные запроса передаются в контекстный метод с автоматическим приведением типов. Под запросом следует понимать URL, соответствующий парадигме REST (сокр. англ. Representational State Transfer, «передача состояния представления»):
/site/view/page/123
К переменным CGI можно получить доступ через сервис Request.
Событие passivate антагонист activate, т.е. в контексте onPassivate()
можно возвращать параметры в строку запроса.
String onPassivate() {
return pageId; // Дописываем номер страницы в конец URL
}
Объект каждой страницы статичен по отношению к сессии пользователя. Т.е. объект существует пока сессия открыта.
Контекст (аннотации)
правитьМетоды могут запускаться в разных режимах с разными переменными окружения — это и есть контекст выполнения метода.
Для выбора контекста в Tapestry используются специальные директивы (аннотации), которые устанавливаются перед определением метода и начинаются с символа @:
public class Category {
...
@OnEvent("activate")
void selectPage(String pageId) {
this.pageId = pageId;
}
}
Аннотации реализованы в Java начиная с версии 1.5. Они были введены для того чтобы заменять блоки часто встречающегося кода.
Также можно напрямую указать обработчик контекста, как обработчик события:
onActivate() {
// Обрабатываем
}
Список аннотаций
править- @Asset() привязывает метод к ресурсу
- @Environmental — подключает одноименный сервис [1]
- Все Tapestry анотации на сайте http://tapestry.apache.org
Слушатели
правитьСлушатель, наблюдатель (англ. event listener) — методы, обрабатывающие события (англ. event) или запросы (англ. request). В Tapestry — это методы классов страниц или компонентов.
Слушатели могут обрабатывать как события инициированные пользователем, так и события возникшие в потоке управления (англ. flow-of-control). Слушатели обрабатывающие flow-of-control события называются «слушатели модели» (англ. hooks), а слушатели реагирующие на события со стороны пользовательского интерфейса называются «cлушатели представления», соответственно модели MVC.
Методы обрабатывающие события оформляются в соответствующем контексте @OnEvent
или именуются соответствующим образом.
<!-- Page template -->
<a t:id="select“ t:type="actionlink“>
// Выбор порождает событие
</a>
|
// Page class
@OnEvent(component = "select")
void valueChosen() {
// Обрабатываем событие
}
или void onActionFromSelect() {
// Обрабатываем событие
}
|
Хорошим тоном считается создание обработчиков для разных типов событий в виде отдельных компонентов.
Фабрика слушателей
правитьВ Tapestry существует такое понятие, как фабрика слушателей. Фабрика слушателей обеспечивает создание объектов для событий.
См. также
править- Слушатели в Java
- Forms in Tapestry (англ.)
- Control flow graph
- BPMN — нотация моделирования бизнес процессов (англ. Business Process Modeling Notation)