4

別のテンプレート内で Facelets テンプレートを使用したいと考えています。現在、これまでに作成したすべてのページに十分な「ベース」テンプレートがあります。トップエリアとコンテンツエリアがあります。

上部にはロゴ、メニュー、ログイン/ログアウト機能があり、コンテンツ領域にはコンテンツが表示されます。

ここで、左側にメニューを表示し、右側に結果を表示する別のページ (ユーザー プロファイル情報を保持するため) を作成する必要があります。このページは、ベース テンプレートのコンテンツ エリアに挿入されます。

これら 2 つの領域 (profile_left と profile_content) を定義する新しいテンプレートを作成し、基本テンプレートを使用することはできますか?

基本テンプレートのコードをコピーして、必要な新しい「定義」 (profile_left と profile_content) を追加するだけでよい理由はわかりませんが、元の基本テンプレートを使い続けることができるかどうかはまだ疑問です。

4

1 に答える 1

9

テンプレートから必要なだけ拡張できます。あなたが思っているように、たった 1 つのテンプレートまたは何かから拡張できるというのは真実ではありません。

例えば:

/WEB-INF/templates/base.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">Default title</ui:insert></title>
    </h:head>
    <h:body>
        <div id="header">Header</div>
        <div id="menu">Menu</div>
        <div id="content"><ui:insert name="content">Default content</ui:insert></div>
        <div id="footer">Footer</div>
    </h:body>
</html>

/WEB-INF/templates/profile.xhtml

<ui:composition template="/WEB-INF/templates/base.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="content">
        <div id="profile_left"><ui:insert name="profile_left" /></div>
        <div id="profile_right"><ui:insert name="profile_right" /></div>
    </ui:define>
</ui:composition>

/user.xhtml

<ui:composition template="/WEB-INF/templates/profile.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">User profile</ui:define>
    <ui:define name="profile_left">
        Profile left.
    </ui:define>
    <ui:define name="profile_right">
        Profile right.
    </ui:define>
</ui:composition>

以下も参照してください。

JSF 2.0 Faceletsを使用してXHTMLに別のXHTMLを含める方法は?

于 2012-09-27T14:17:36.880 に答える