Перейти к содержанию

Tapestry/Шаблоны и классы шаблонов

Материал из Викиучебника — открытых книг для открытого мира
(перенаправлено с «Tapestry/Шаблоны»)

Ключевой момент в разделении логики и представления заключается в разделении шаблонов страниц и файлов классов. Шаблон определяет структуру и внешний вид страницы. Шаблоны в Tapestry оформляются в виде файлов name.tml (где TML — Tapestry Markup Language), которым соответствуют классы name.java, которые представляют собой POJO (англ. Plain Old Java Objects) классы, то есть ничего не наследуют и реализуют минимальный интерфейс. Соответственно имя класса и имя шаблона должны совпадать. Шаблоны — это XML (XHTML) файлы, расширяющие HTML пространством имен, пространством Tapestry. Ниже приведен пример шаблона из стандартного ознакомительного приложения Quickstart:

<html t:type="layout" title="О программе"
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
      xmlns:p="tapestry:parameter">

    <p>О программе ...</p>
</html>
Информация

Имена файлов в Tapestry чувствительны к регистру (англ. case-sensitive). Таким образом регистры классов и шаблонов должны совпадать.

Таким образом любой элемент, который начинается с <t: относится к пространсту имен Tapestry. Любой элемент, который не входит в пространство имен Tapestry будет выведен в браузер.

Расширения (англ. Expansions)

[править]

Расширения позволяют использовать свойства в соответствующих страницах или компонентах. Расширения начинаются с «${» и заканчиваются символом «}»

<h3>Account Name:</h3>
<p class=”${accountClass}”>${account}</p>
Информация

Расширения не допустимы внутри дескрипторов или в именах атрибутов дескрипторов. Расширения могут быть использованы как текст или как значения атрибутов.

Расширения как и свойства могут предворяться префиксами для доступа к локализованным сообщениям (messages).

Блоки

[править]

В любом месте шаблона можно использовать блоки:

<t:block id=”nav”> ... </t:block>

Блоки по умолчанию не отображаются, но их можно отобразить по событию (требованию).