第19章 Facelets模板与复合构件

19.1. 配置
19.1.1. 添加初始化参数
19.1.2. 添加 FaceletViewHandler
19.1.3. 定义 Facelets 的命名空间
19.2. Facelets模板
19.2.1. 模板页面与适配页面
19.2.1.1. 插入整段模板内容
19.2.1.2. 插入多处模板内容
19.2.1.3. 模板嵌套
19.2.1.4. 参数传递
19.3. 复合构件
19.3.1. 什么是复合构件
19.3.2. 自定义复合构件
19.3.2.1. 创建 复合构件标识文件
19.3.2.2. 在 web.xml 中声明该标示
19.3.2.3. 创建复合构件模板文件
19.3.2.4. 用命名空间导入标识文件
19.4. 复合组件Scope-在同一RequestBean的页面里使用多个同源复合组件
19.4.1. 前言
19.4.2. 如何开发复合组件

从OperaMasks 2.0版本开始,采用了相对与JSP而言更适合表现构件化页面的Facelets模板技术作为默认的表现层技术。(注:Facelets亦成为JSF2.0规范中的默认的显示技术)

19.1. 配置

19.1.1. 添加初始化参数

Facelets默认采用XHTML(可扩展的HTML)来实现视图,所以我们需要首先在web.xml中添加如下参数:

<context-param>
 <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
 <param-value>.xhtml</param-value>
</context-param>

这将告诉OperaMasks引擎采用 xhtml 后缀,Facelet 渲染器能够解释这个前缀。

19.1.2. 添加 FaceletViewHandler

要让 Facelets 模板生效,需要把 Facelets 视图处理器告诉 OperaMasks(FaceletViewHandler是个插件,为不同的响应生成技术(包括 Facelets)处理 请求处理生命周期的 “渲染器响应和恢复视图” 阶段),所以我们需要在 faces-config.xml 中做如下配置:

<application>
  <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>

19.1.3. 定义 Facelets 的命名空间

为了用 Facelets 标签进行模板化,需要在页面 的命名空间像下面这样导入它们:

<f:view .(省略).. xmlns:ui="http://java.sun.com/jsf/facelets">