Повторное использование фрагментов страниц в Tapestry 5

Как я могу повторно использовать фрагменты разметки TML между страницами? Я хочу преобразовать повторяющийся код в компонент, аналогичный файлу тегов или включению jsp.


person Robert Munteanu    schedule 20.08.2010    source источник


Ответы (1)


Чтобы создать компонент Tapestry, вы создаете класс компонента и (обычно) файл .tml в пакете компонентов вашего приложения Tapestry.

Пример класса компонента, который отображает один пост в приложении для ведения блога:

package my.tapestry.basepackage.components;

...

public class Post {

    @Parameter(allowNull = false, required = true, 
            defaultPrefix = BindingConstants.PROP)
    private BlogPost post;

    public BlogPost getPost() {
        return post;
    }

}

Соответствующий Post.tml:

<t:container xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
        xmlns:p="tapestry:parameter">
    <h2>${post.title}></h2>
    <p>
        <span t:type="ck/dateFormat" t:value="post.created" 
                t:pattern="d/M/yyyy" />
    </p>
    <div>
        ${post.text}
    </div>
</t:container>

Затем вы можете использовать свой компонент на любой из своих страниц, точно так же, как вы используете встроенные компоненты Tapestry:

<div t:type="Post" t:post="post" />
person Henning    schedule 20.08.2010
comment
И, конечно же, компоненты могут содержать свои собственные ActionLinks, EventLinks, Forms и т. д. вместе с методами обработчиков событий, так что вы не просто копируете контент между страницами... вы копируете поведение. - person Howard M. Lewis Ship; 02.09.2011