基本上,您需要给目标框架 a并在元素的属性中name
指定它。例如target
<a>
<frame name="center">
和
<a href="page.xhtml" target="center">
但这并不完全是模板化现代 Web 应用程序的正确方法。框架集在用户体验和 SEO 价值方面有许多缺点。相反,应该使用任何服务器端视图技术(如您正在使用的 Facelets)的包含和模板工具。只有当您手头完全没有服务器端视图技术(因此,只有纯 HTML)或您想要呈现外部网站时,才应使用框架集。
使用 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
和#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>
. 请参阅其展示应用程序中的“完整示例”,例如这个。
也可以看看: