Как создать шаблон многократного использования с верхним / нижним колонтитулом / навигацией? - PullRequest
8 голосов
/ 01 апреля 2012

Я играл с JSF, и у меня есть проект, который имеет панели заголовка / нижнего колонтитула / навигации / содержимого.Однако проект переходит со страницы 1 на страницу 2 и т. Д., Причем каждая страница имеет разный макет.Как я могу создать шаблон многократного использования, который сохраняет одинаковый внешний вид от страницы к странице, т. Е. Верхний / нижний колонтитулы / навигация остаются прежними, но содержимое обновляется?

1 Ответ

23 голосов
/ 01 апреля 2012

Это звучит как классический случай мастер-шаблона. В такой шаблон вы помещаете все, что является общим для всех страниц, а затем ваши фактические страницы ссылаются на этот шаблон и «заполняют пробелы». В некотором смысле это обратная сторона классического включения.

* 1003 Е.Г. *

/ WEB-INF / шаблоны / masterTemplate.xhtml:

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
>
    <h:head>
        <title>
            <ui:insert name="title">Some title</ui:insert>
        </title>        
    </h:head>

    <ui:include src="header.xhtml"/>

    <h:body>
        <ui:insert name="content" />
    </h:body>

    <ui:include src="footer.xhtml"/>

</html>

Страница использует это следующим образом, например:

/ hello.xhtml

<ui:composition template="/WEB-INF/templates/masterTemplate.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets" 
>
   <ui:define name="title">hello</ui:define>

    <ui:define name="content">
        Hi, this is the page
    </ui:define>
</ui:composition>
...