模板化和重用的第一步是创建一个模板。
一个网页通常由一些基本的部分组成:header, body,和footer。用Facelets,你能把这些通用的元素放在一个单独的页面里,并创建一个带有可编辑区的模板,如下面的模板所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Sample Template</title>
</head>
<body> <h1>#{title}</h1>
<div><ui:insert name="menu"/></div>
<p><ui:insert name="body"/></p>
</body>
</html>
对于menu和body来说,<ui:insert/> 标签用来标记这块地方的内容会根据每一页变化。你可以用这个模板来创建其他的页面,并给menu和body区域提供不同的内容。
<ui:composition template="template.xhtml">
<ui:param name="title" value="Here's my Title"/>
<ui:define name="menu">Here's My Menu</ui:define>
<ui:define name="body">Here's My Body</ui:define>
</ui:composition>
这个例子介绍了另外一个标签<ui:composition/>。该标签提供了一对特征。它删掉了它外面的任何内容,就是说,你可以写一些普通的HTML页面,而Facelets将只是用或者 显示出现在<ui:composition/>标签里面的内容。
为了把内容和模板配对,<ui:define/>标签的name属性和模板中的<ui:insert/>标签的name属性一致的就可以替换。为了简便地传递变量或者文字,你可以使用<ui:param/>标签,该标签把其value属性作为模板中的一个变量来替代。
使用Includes
页面中的位置这个概念在页面中定义可重用的内容是相当强大的。上面几个例子展示了如何使用模板中的位置来显示内容。但是如果你想从另一个页面中包含进来一些东西该如何做呢?用<ui:include/>标签:
<!-- include.xhtml --> ... <span id="leftNav">
<ui:include src="/WEB-INF/siteNav.xhtml"/> </span> ...
<!-- siteNav.xhtml --> ..
<ui:composition> <!-- myfaces tomahawk components -->
<t:tree2 value="#{backingBean.options}" var="opt"> ... </t:tree2> </ui:composition> ...
当Facelets处理include.xhtml时,siteNav.xhtml的所有<ui:composition/>中的内容将被包含进include.xhtml:
<!-- include.xhtml --> ...
<span id="leftNav"> <!-- myfaces tomahawk components -->
<t:tree2 value="#{backingBean.options}" var="opt"> ... </t:tree2> </span> ...
如果你愿意给siteNav.xhtml传递变量,这些变量供tree组件使用,那么你可以使用<ui:param/>标签:
<!-- include.xhtml --> ... <span id="leftNav">
<ui:include src="/WEB-INF/siteNav.xhtml">
<ui:param name="menuBean" value="#{backingBean.options}"/>
</ui:include> </span> ...
<!-- siteNav.xhtml --> ...
<ui:composition> <!-- myfaces tomahawk components -->
<t:tree2 value="#{menuBean}" var="opt"> ...
</t:tree2> </ui:composition> ...
你能够看到现在siteNav.xhtml可以使用变量menuBean并且menuBean是通过<ui:include/>标签来传递的。
分享到:
相关推荐
在 JavaServer Faces (JSF) 2.0 中,Facelets 取代 JavaServer Pages (JSP) 成为默认的视图声明语言 (VDL)。有了 Facelets,您不需要像以前...在 Web 应用程序中使用 Facelets 的部分好处包括模板化、重用和易于开发。
3. **页面模板与组件**:Facelets 提供了一种基于 XML 的模板语言,允许你在 `template.xhtml` 中定义页面布局,然后在其他页面如 `guess.xhtml` 和 `response.xhtml` 中使用 `<ui:include>` 或 `<ui:insert>` 指令...
因此,在利用 Facelets 构建 Web 应用时,开发者必须采取适当的安全措施,如使用 CSRF 令牌、对用户输入进行严格的验证和过滤等,以确保应用程序的安全性。 #### 六、Facelets 的未来展望 自 Facelets 在 JSF 2.0 ...
- Facelets模板允许开发者创建可重用的页面布局和设计元素。通过定义模板和模板客户,可以实现代码复用,提高开发效率。 3. **Facelets表达式语言(EL)** - EL是Facelets中用于访问应用程序上下文数据的简便语法。...
- Facelets 使用XML语法,允许开发者创建可重用的UI组件和模板,提高代码的可读性和可维护性。 2. **MyEclipse 集成Facelets** - MyEclipse 是一个强大的Java EE集成开发环境,支持多种Web技术,包括JSF和...
- Facelets比JSP更轻量级,支持组件化开发,而JSP侧重于脚本和模板。 - Facelets提供更好的调试体验,因为错误可以在编译时检测,而JSP通常在运行时发现问题。 8. **整合其他技术** - Facelets可以与CDI...
2. **组件化和模板化**:学习如何利用Facelets进行组件化和模板化设计,提高代码的复用性和可维护性。 3. **高级特性**:探索Facelets的一些高级特性,如条件渲染、循环和事件处理等。 4. **最佳实践**:分享作者在...
7. **Facelets模板和组件**: Facelets的模板系统允许创建可重用的布局和组件,提高了代码的复用性和一致性。开发者可以创建一个母版页,然后在子页面中继承和扩展。 8. **整合其他技术**: JSF可以与其他Java EE技术...
通常,这需要在项目的类路径中添加相应的jar,配置web.xml以启用Facelets和Ajax4jsf,然后在Facelets页面中使用Ajax4jsf的组件和行为。 6. **开发实践**:在实际开发中,开发者可以通过JSF的Managed Beans定义业务...
Facelets 非常适合 JSF 最后,专为 JSF 设计的视图技术!...在这篇文章中,JSF 的热心支持者 Rick Hightower 介绍了关于 Facelets 他最喜欢的内容:容易的 HTML 样式的模板化和可重用的复合组件。
**JSF Facelets 1.1.9...通过其模板化的设计、组件绑定以及高效的更新机制,它极大地简化了复杂Web应用程序的开发和维护。同时,随着不断的技术进步和社区支持,JSF Facelets的后续版本将继续提升开发体验和应用性能。
- **高级主题**:探讨 Facelets 的一些高级功能,如模板化、事件处理等。 - **实践案例**:通过具体的示例展示如何利用 Facelets 构建动态网页。 ### 总结 综上所述,这份文档不仅提供了 Facelets 的实用示例,...
3. **Facelets模板**: - **模板组件**:Facelets中的模板组件可以定义页面的重复结构,如页眉、页脚和侧边栏。 - **模板客户**:模板客户可以引用模板组件,实现页面布局的重用。 4. **布局文件解析**: - `...
- 通过具体的示例代码讲解如何使用MyFaces和Facelets进行开发,帮助读者掌握核心技能。 #### 4.3 高级特性 - 深入探讨MyFaces和Facelets的高级特性,如生命周期管理、事件处理机制、国际化支持等。 - 分享最佳实践...
Facelets以其简洁的XML语法、模板继承和组件化的特性而受到欢迎。Facelets 1.2改进了性能,增强了对EL(Expression Language)的支持,并引入了更多的设计模式,如复合组件和导航结构。 这个压缩包包含的文件可能是...
Facelets 提供了模板、组合和重用功能,使得开发更加模块化和易于维护。与JSP相比,Facelets 更加轻量级,有更好的性能和更少的冗余代码。 **PrimeFaces** PrimeFaces 是一个流行的开源JSF组件库,提供了大量的UI...
- **模板化**:支持模板化开发,可以轻松地创建可复用的布局和组件。 - **组件化**:允许开发者定义自己的UI组件,提高代码重用性和维护性。 - **易于集成**:Facelets与JSF的集成非常紧密,可以无缝地与JSF框架...
4.4 facelets模板化标签使用指南 4.4.1 ui:composition 4.4.2 ui:decorate 4.4.3 ui:define 4.4.4 ui:insert 4.4.5 ui:include 4.4.6 ui:param 4.5 facelets非模板化标签使用指南 4.5.1 ui:component 4.5.2 ui:...
4.4 facelets模板化标签使用指南 4.4.1 ui:composition 4.4.2 ui:decorate 4.4.3 ui:define 4.4.4 ui:insert 4.4.5 ui:include 4.4.6 ui:param 4.5 facelets非模板化标签使用指南 4.5.1 ui:component 4.5.2 ui:...