基本的には、ターゲットフレームにaname
を指定し、要素のtarget
属性で指定する必要があります。<a>
例えば
<frame name="center">
と
<a href="page.xhtml" target="center">
しかし、これはすべて、最新のWebアプリケーションをテンプレート化するための完全に正しい方法ではありません。フレームセットには、ユーザーエクスペリエンスとSEOの価値に関して多くの欠点があります。代わりに、サーバーサイドビューテクノロジ(使用しているFaceletsなど)のインクルードおよびテンプレート機能を使用する必要があります。フレームセットは、サーバーサーバー側のビューテクノロジがまったくない場合(つまり、プレーンHTMLのみ)、または外部Webサイトを表示する場合にのみ使用してください。
Faceletsでは、代わりにこのようなものをマスターテンプレートとして使用する必要があります
/WEB-INF/templates/layout.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"><ui:include src="/WEB-INF/includes/header.xhtml"></div>
<div id="menu"><ui:include src="/WEB-INF/includes/menu.xhtml"></div>
<div id="content"><ui:insert name="content">Default content</ui:insert></div>
</h:body>
</html>
(CSSを使用して、レイアウトコンポーネントを希望どおりに配置できます(例:float:left
on #menu
and #content
))
テンプレートクライアント(実際にURLで開くページ)は次のようになります。
/page.xhtml
<ui:composition template="/WEB-INF/templates/layout.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">
New page title here
</ui:define>
<ui:define name="content">
<h1>New content here</h1>
<p>Blah blah</p>
</ui:define>
</ui:composition>
最新のJSF/Facelets Webアプリケーションのオープンソースの例については、特にOmniFacesショーケースアプリケーションを確認してください。
PrimeFacesを使用しているので、別の選択肢があり<p:layout>
ます。ショーケースアプリケーションの「完全な例」を参照してください。たとえば、これです。
参照: