Facelets

2024 年 8 月 29 日 | 阅读 2 分钟

它是一种轻量级的页面声明语言,用于使用 HTML 风格构建 JavaServer Faces 视图。

它包括以下功能

  • 它使用 XHTML 创建网页。
  • 除了 JavaServer Faces 和 JSTL 标签库之外,它还支持 Facelets 标签库。
  • 它支持表达式语言 (EL)。
  • 它使用模板用于组件和页面。

优点

  • 它通过模板和复合组件支持代码重用。
  • 它通过自定义提供组件和其他服务器端对象的功能扩展性。
  • 更快的编译时间。
  • 它在编译时验证表达式语言。
  • 高性能渲染。

JavaServer Faces 技术支持各种标签库,用于将组件添加到网页。为了支持 JavaServer Faces 标签库机制,Facelets 使用 XML 命名空间声明。

下表显示了 Facelets 支持的标签库。

标签库URI前缀示例内容
JavaServer Faces Facelets 标签库http://xmlns.jcp.org/jsf/faceletsuiui:component ui:insert用于模板的标签
JavaServer Faces HTML 标签库http://xmlns.jcp.org/jsf/htmlhh:head h:body h:outputText h:inputText所有 UIComponent 对象的 JavaServer Faces 组件标签
JavaServer Faces 核心标签库http://xmlns.jcp.org/jsf/coreff:actionListener f:attribute用于 JavaServer Faces 自定义操作的标签,这些操作独立于任何特定的渲染套件
传递元素标签库http://xmlns.jcp.org/jsfjsfjsf:id用于支持 HTML5 友好标记的标签
传递属性标签库http://xmlns.jcp.org/jsf/passthroughpp:type用于支持 HTML5 友好标记的标签
复合组件标签库http://xmlns.jcp.org/jsf/compositecccc:interface用于支持复合组件的标签
JSTL 核心标签库http://xmlns.jcp.org/jsp/jstl/corecc:forEach c:catchJSTL 1.2 核心标签
JSTL 函数标签库http://xmlns.jcp.org/jsp/jstl/functionsfnfn:toUpperCase fn:toLowerCaseJSTL 1.2 函数标签

Facelets 应用程序的生命周期

JavaServer Faces 规范定义了 JavaServer Faces 应用程序的生命周期。以下步骤描述了基于 Facelets 的应用程序的该过程。

1) 当客户端对使用 Facelets 创建的网页发出新请求时,生命周期开始。JSF 创建一个新的组件树或 javax.faces.component.UIViewRoot 并将其放入 FacesContex。

2) 视图已准备好填充用于呈现的组件。如果可用,则将 UIViewRoot 应用于 Facelets。

3) 新构建的视图将作为响应呈现回客户端。

4) 在渲染时,此视图的状态将存储以供下一个请求使用。输入组件和表单数据的状态已存储。

5) 客户端可以与视图交互并从 JavaServer Faces 应用程序请求另一个视图。此时,已保存的视图将从已存储的状态中恢复。

6) 恢复的视图将再次通过 JavaServer Faces 生命周期,最终将生成一个新视图或重新呈现当前视图(如果没有验证问题且没有触发操作)。

7) 如果请求相同的视图,则再次呈现已存储的视图。

8) 如果请求新视图,则继续步骤 2

9) 新视图作为响应呈现回客户端。