`
liuyan86318
  • 浏览: 7260 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

用 Facelets 进行模板化

    博客分类:
  • jsf
阅读更多

模板化和重用的第一步是创建一个模板。

一个网页通常由一些基本的部分组成: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>

对于menubody来说,<ui:insert/> 标签用来标记这块地方的内容会根据每一页变化。你可以用这个模板来创建其他的页面,并给menubody区域提供不同的内容。

<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/>标签来传递的。

 
分享到:
评论

相关推荐

    facelets模板

    在 JavaServer Faces (JSF) 2.0 中,Facelets 取代 JavaServer Pages (JSP) 成为默认的视图声明语言 (VDL)。有了 Facelets,您不需要像以前...在 Web 应用程序中使用 Facelets 的部分好处包括模板化、重用和易于开发。

    Facelets

    3. **页面模板与组件**:Facelets 提供了一种基于 XML 的模板语言,允许你在 `template.xhtml` 中定义页面布局,然后在其他页面如 `guess.xhtml` 和 `response.xhtml` 中使用 `&lt;ui:include&gt;` 或 `&lt;ui:insert&gt;` 指令...

    facelets 教程

    因此,在利用 Facelets 构建 Web 应用时,开发者必须采取适当的安全措施,如使用 CSRF 令牌、对用户输入进行严格的验证和过滤等,以确保应用程序的安全性。 #### 六、Facelets 的未来展望 自 Facelets 在 JSF 2.0 ...

    facelets中文教程(初级+高级)

    - Facelets模板允许开发者创建可重用的页面布局和设计元素。通过定义模板和模板客户,可以实现代码复用,提高开发效率。 3. **Facelets表达式语言(EL)** - EL是Facelets中用于访问应用程序上下文数据的简便语法。...

    facelets_demo

    - Facelets 使用XML语法,允许开发者创建可重用的UI组件和模板,提高代码的可读性和可维护性。 2. **MyEclipse 集成Facelets** - MyEclipse 是一个强大的Java EE集成开发环境,支持多种Web技术,包括JSF和...

    facelets源码包

    - Facelets比JSP更轻量级,支持组件化开发,而JSP侧重于脚本和模板。 - Facelets提供更好的调试体验,因为错误可以在编译时检测,而JSP通常在运行时发现问题。 8. **整合其他技术** - Facelets可以与CDI...

    Facelets Essentials - APRESS

    2. **组件化和模板化**:学习如何利用Facelets进行组件化和模板化设计,提高代码的复用性和可维护性。 3. **高级特性**:探索Facelets的一些高级特性,如条件渲染、循环和事件处理等。 4. **最佳实践**:分享作者在...

    JSF与Facelets应用程序

    7. **Facelets模板和组件**: Facelets的模板系统允许创建可重用的布局和组件,提高了代码的复用性和一致性。开发者可以创建一个母版页,然后在子页面中继承和扩展。 8. **整合其他技术**: JSF可以与其他Java EE技术...

    jsf+facelets+ajax4jsf的全部jar包

    通常,这需要在项目的类路径中添加相应的jar,配置web.xml以启用Facelets和Ajax4jsf,然后在Facelets页面中使用Ajax4jsf的组件和行为。 6. **开发实践**:在实际开发中,开发者可以通过JSF的Managed Beans定义业务...

    facelets技术文档

    Facelets 非常适合 JSF 最后,专为 JSF 设计的视图技术!...在这篇文章中,JSF 的热心支持者 Rick Hightower 介绍了关于 Facelets 他最喜欢的内容:容易的 HTML 样式的模板化和可重用的复合组件。

    jsf-facelets1.1.9

    **JSF Facelets 1.1.9...通过其模板化的设计、组件绑定以及高效的更新机制,它极大地简化了复杂Web应用程序的开发和维护。同时,随着不断的技术进步和社区支持,JSF Facelets的后续版本将继续提升开发体验和应用性能。

    facelets example program 编程 例子 JavaJazzUp.pdf

    - **高级主题**:探讨 Facelets 的一些高级功能,如模板化、事件处理等。 - **实践案例**:通过具体的示例展示如何利用 Facelets 构建动态网页。 ### 总结 综上所述,这份文档不仅提供了 Facelets 的实用示例,...

    facelets.......................................

    3. **Facelets模板**: - **模板组件**:Facelets中的模板组件可以定义页面的重复结构,如页眉、页脚和侧边栏。 - **模板客户**:模板客户可以引用模板组件,实现页面布局的重用。 4. **布局文件解析**: - `...

    Apress - Definitive Guide To Apache Myfaces And Facelets (2008)

    - 通过具体的示例代码讲解如何使用MyFaces和Facelets进行开发,帮助读者掌握核心技能。 #### 4.3 高级特性 - 深入探讨MyFaces和Facelets的高级特性,如生命周期管理、事件处理机制、国际化支持等。 - 分享最佳实践...

    jsf 1.2 myfaces1.2.7 richfaces3.3.1 facelets1.2 所有的最新包

    Facelets以其简洁的XML语法、模板继承和组件化的特性而受到欢迎。Facelets 1.2改进了性能,增强了对EL(Expression Language)的支持,并引入了更多的设计模式,如复合组件和导航结构。 这个压缩包包含的文件可能是...

    Facelets:jsf、primefaces、facelets、spring 集成、jstl、

    Facelets 提供了模板、组合和重用功能,使得开发更加模块化和易于维护。与JSP相比,Facelets 更加轻量级,有更好的性能和更少的冗余代码。 **PrimeFaces** PrimeFaces 是一个流行的开源JSF组件库,提供了大量的UI...

    facelet.pdf

    - **模板化**:支持模板化开发,可以轻松地创建可复用的布局和组件。 - **组件化**:允许开发者定义自己的UI组件,提高代码重用性和维护性。 - **易于集成**:Facelets与JSF的集成非常紧密,可以无缝地与JSF框架...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    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:...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    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:...

Global site tag (gtag.js) - Google Analytics