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 существует такое понятие, как фабрика слушателей. Фабрика слушателей обеспечивает создание объектов для событий.

См. также[править]