`
eneasy
  • 浏览: 128331 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Facelets 标签参考1

    博客分类:
  • web
阅读更多

Facelets 标签参考

lxm翻译自《Facelets Essentials: Guide to JavaServer™ Faces View Definition Framework 》

不当之处欢迎指正。

 

<ui:component/>

 

<ui:component> 标签在 JSF 组件树中插入一个 UIComponet 实例,并作为所有它所包含的组件或内容片断的根节点。表格 1-4 列出它的属性。

表格 1-4: <ui:component> 标签属性

属性名称

必需

描述

id

和所有的组件一样,可以这它提供一个 id, 如果没有设置, Facelets 将按照 JSF 的规则为它创建一个。

binding

按照 JSF 的规范 , 这个属性的作用是通过指向 Managed Bean 的一个属性来引用 UIComponet 的实例 , 如果 Managed Bean 的这个个属性没有事先初始化, UIComponet 实例将惰性 (lazily) 被创建 .

 

这个标签以外的内容将被编译器忽略 , 因此不会显示在视图中。

 

这里以及这里以前的内容将被忽略

<ui:component binding="#{backingBean.myComponent}">

<div>The directory contains #{totalBirds} birds!</div>

</ui:component>

这里以及这里后的内容将被忽略

 

产生的 Html 输出为:

The directory contains #{totalBirds} birds!

 

<ui:fragment/>

<ui:fragment> 标签相似,不同的是 <ui:fragment> 标签外部的内容不会被忽略。下列表格列出它的属性。

表格 : <ui:fragment> 标签属性

属性名称

必需

描述

id

和所有的组件一样,可以这它提供一个 id, 如果没有设置, Facelets 将按照 JSF 的规则为它创建一个。

binding

按照 JSF 的规范 , 这个属性的作用是通过指向 Managed Bean 的一个属性来引用 UIComponet 的实例 , 如果 Managed Bean 的这个个属性没有事先初始化, UIComponet 实例将惰性 (lazily) 被创建 .

<ui:component> 标签在 JSF 组件树中插入一个 UIComponet 实例,并作为标签内部所有它所包含的组件或内容片断的根节点 , 标签外部的内容编译时会被包含进来。

举例:

This will not be ignored

<ui:fragment>

<div>

<h:outputText value="I want #{eagle.total} eagles."/>

</div>

</ui:fragment>

This will not be ignored

产生输出:

This will not be ignored

<div>I want 3 eagles.</div>

This will not be ignored

 

<ui:composition/>

<ui:composition> 标签是一个模板标签,它将一些可以被其它 Facelets 页面所包含的内容封装起来。表格 1-5 列出它的属性。

表格 1-5: <ui:component> 标签属性

属性名称

必需

描述

template

将在标签开始和结束之间显示的模板文件所在的路径

 

<ui:composition> 指定使用哪个模版文件,然后通过 <ui:define> 对模版文件中每个可供插入的“ <ui:insert> 锚点”进行定义。 在运行期,具体的内容将会被插入到 <ui:composition> 中定义的锚点位置。

ui:component 一样,这个标签以外的内容将被编译器忽略 , 不会显示在视图中 , ui:component 不同的是, ui:composition 不会在组件树上创建节点。

 

这里以及这里以前的内容将被忽略

<ui:composition>

<h:outputText value="#{bird.lifeExpectancy}" />

</ui:composition>

这里以及这里后的内容将被忽略

 

例如 :

<ui:composition template="bird-template.xhtml">

<ui:define name="title">Input Name</ui:define>

<ui:define name="summary">

<h:panelGrid columns="2">

<h:outputText value="Bird Name"/>

<h:outputText value="#{bird.name}"/> 34 Facelets Essentials

<h:outputText value="Life expectancy"/>

<h:outputText value="#{bird.lifeExpectancy}"/>

</h:panelGrid>

</ui:define>

</ui:composition>

 

这样 composition 标签内的内容按 bird-template.xhtml 模板文件的定义显示 , 模板文件中中必须有 <ui:insert name="title"> <ui:insert name="summary"> 的定义。

创建一个组合视图主要使用 ui:composition, ui:define ui:insert 标签。

 

<ui:decorate/>

<ui:decorate> 标签和 <ui:composition> 标签相似,唯一不同的是它不忽略标签外部的内容。

表格 1-6 列出它的属性。

表格 1-6: <ui:decorate> 标签属性

属性名称

必需

描述

template

将在标签开始和结束之间显示的模板文件所在的路径

例子:

Listing 1-10. box-template.xhtml

<!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"> 36 Facelets Essentials

<body>

<ui:composition>

<div style="border: 1px solid black; display:block">

<ui:insert name="header"/>

</div>

<div style="border: 1px solid black; display:block">

<ui:insert name="content"/>

</div>

</ui:composition>

</body>

</html>

 

 

Listing 1-11. decorate-example.xhtml

<!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">

<head>

<title>Decorate example</title>

</head>

<body>

<p>These are the birds in today's menu:</p>

<ui:decorate template="box-template.xhtml">

<ui:define name="header">

Happy Parrot

</ui:define>

<ui:define name="content">

How many parrots do you want?

<h:inputText value="3"/>

</ui:define>

</ui:decorate>

<br/>

<ui:decorate template="box-template.xhtml">

<ui:define name="header">

Mighty Eagle

</ui:define>

<ui:define name="content">

Eagles are not available now.

</ui:define>

</ui:decorate>

</body>

</html>

 

html 输出内容 :

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Decorate example</title>

</head>

<body>

<p>These are the birds in today's menu:</p>

<div style="border: 1px solid black; display:block">

Happy Parrot

</div>

<div style="border: 1px solid black; display:block">

How many parrots do you want?

<input id="_id6" name="_id6"

type="text" value="3" />

</div>

<br/>

<div style="border: 1px solid black; display:block">

Mighty Eagle

</div>

<div style="border: 1px solid black; display:block">

Eagles are not available now.

</div>

</body>

</html>

 

<ui:define/>

ui:define 标签用于将命名的内容插入到模板中 , 它在模板标签(如 composition decorate )的内部使用。 Define name 属性必须和目标模板中 ui:insert 标签的 name 属性一致。表格 1-7 列出它的属性。

表格 1-7: <ui:define> 标签属性

属性名称

必需

描述

name

必须和目标模板中 ui:insert 标签的 name 属性一致

举例 1:

<ui:decorate template="box-template.xhtml">

<ui:define name="header">

Happy Parrot

</ui:define>

this will be removed

<ui:define name="content">

How many parrots do you want?

</ui:define>

</ui:decorate>

define 标签内部的内容将被插入到目标模板中 name 相同的 insert 标签处。 define 标签外部的内容将被忽略。

举例 2:

Listing 1-12. define-template.xhtml

<h:outputText value="Which bird sings like this? "/>

<ui:insert name="song"/>

define-example.xhtml

This will be ignored

<ui:composition template="define-template.xhtml">

<ui:define name="song">

<h:outputText value="cock-a-doodle-doo"/>

</ui:define>

</ui:composition>

这个例子输出 :

Which bird sings like this? cock-a-doodle-doo

<ui:insert/>

ui:insert 标签用来在模板中指定一个插入点,可以被客户端模板中 ui:define 定义的内容所代替。 表格 1-8 列出它的属性。

表格 1-8: <ui:insert> 标签属性

属性名称

必需

描述

name

用来和客户端模板中 ui:define 标签的 name 属性相一致 , 如果没有指定,整个客户端模板将被插入。

如果模板中某个 insert 标签在客户端模板中没有定义对应的 define ,则使用模板中的默认值。

Listing 1-13. insert-template.xhtml

<!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">

<body>

<h1>

<ui:insert name="title">

No title

</ui:insert>

</h1>

<div>

<ui:insert name="content">

No content is defined

</ui:insert>

</div>

</body>

</html>

我们需要一个客户端模板 , 如下:

Listing 1-14. insert-client.xhtml

<ui:composition template="insert-template.xhtml">

<ui:define name="title">

The Parrot Quest

</ui:define>

</ui:composition>

我们只定义了 title 的内容,所以 content 使用默认值。输出如下:

<h1>

The Parrot Quest

</h1>

<div>

No content is defined

</div>

name 属性是可选的,如果没有被指定,整个客户端模板将被插入。也没必须要客户端模板定义 define 。如下:

Listing 1-15. insert-template2.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD ¬

HTML 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">

<body>

<div>

<h1>One story of Birds</h1>

<ui:insert/>

</div>

</body>

</html>

Listing 1-16. insert-client2.xhtml

<ui:composition template="insert-template2.xhtml">

One day I decided to start counting

the number of parrots in the world,

just to find that...

<br/>

<h:inputTextarea value="#{backingBean.story}"/>

</ui:composition>

输出如下:

<div>

<h1>One story of Birds</h1>

One day I decided to start counting

the number of parrots in the world,

just to find that...

<br />

<textarea name="_id3"></textarea>

</div>

 

<ui:include/>

<ui:include/> 标签用来在文件中包含另外一个 Facelets 文件 , 它只需要指定被包含文件的位置。它可以包含任何拥有 ui:component ui:composition 等标签或是简单的 XHTML XML 代码片断的文件。下列表格列出它的属性。

表格 : <ui:include> 标签属性

属性名称

必需

描述

src

属性的值可以是简单的值或是 EL 表达式,用来指定被包含的 Faclets 文件的位置 , 可以是相对路径也可以是绝对路径。

举例:

<div>

<ui:include src="#{backingBean.currentMenu}"/>

</div>

 

分享到:
评论
1 楼 lvjun106 2011-07-20  
刚好需要。。。支持楼主。

相关推荐

    facelets_demo

    1. **Facelets 技术介绍** - Facelets 是JSF 2.0及其后续版本的标准视图层技术,替代了早期的JSP作为默认视图表示。 - 它的主要优点包括代码复用、组件化、模板驱动、XML基础语法和更强的调试能力。 - Facelets ...

    Facelets Essentials - APRESS

    1. **Facelets基础**:了解Facelets的基本概念和语法,包括如何使用Facelets标签库。 2. **组件化和模板化**:学习如何利用Facelets进行组件化和模板化设计,提高代码的复用性和可维护性。 3. **高级特性**:探索...

    JSF标签库快速参考

    此外,JSF2引入了Facelets作为默认的视图层技术,它允许在页面中嵌入表达式语言(EL)和标签,使得页面结构更加清晰,代码更易于维护。 在“JSF标签库快速参考”文档中,你将找到关于这些标签和组件的详细说明,...

    java 文本标签大全 api

    1. JSP标准标签库(JSTL) JSTL是JavaServer Pages Standard Tag Library的缩写,它提供了许多预定义的标签,用于执行常见的JSP任务,如迭代、条件判断、国际化、XML处理等。JSTL的核心部分包括Core、Format、I18N...

    JSF 标签快速参考及示例

    JSF的核心是UI组件库,这些组件可以以HTML标签的形式在JSP或Facelets页面中使用。本资料主要针对JSF中的标签进行详细讲解,结合《corejsf》一书,帮助开发者更深入地理解和应用JSF。 在JSF中,标签是构建用户界面的...

    轻松入门Struts2(V3.0).pdf + java web标签大全

    而"java web标签大全.CHM"则可能是一份全面的Java Web标签参考文档,包括JSP标准标签库(JSTL)、自定义标签(如Struts2标签)以及其他第三方库的标签。这份文档可能会涵盖以下内容: 1. **JSTL**:JSTL是Java...

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

    4.5 facelets非模板化标签使用指南 4.5.1 ui:component 4.5.2 ui:fragment 4.5.3 ui:remove 4.5.4 ui:debug 第5章 托管bean与JSF表达式语言 5.1 托管bean概念 5.1.1 简单托管bean示例 5.1.2 初始化托管bean属性 ...

    JSF控件详细参考手册

    本文档旨在为BIMP平台开发者提供一个全面且深入的JSF Facelets标签集参考指南。通过详细介绍这些标签的用途与用法,帮助开发者更好地掌握和利用这些工具来提高Web应用的质量与用户体验。 #### Facelets标签集合概述...

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

    4.5 facelets非模板化标签使用指南 4.5.1 ui:component 4.5.2 ui:fragment 4.5.3 ui:remove 4.5.4 ui:debug 第5章 托管bean与JSF表达式语言 5.1 托管bean概念 5.1.1 简单托管bean示例 5.1.2 初始化托管bean属性 ...

    JSF2 规范的标准参考实现

    7. **Facelets作为默认视图技术**:Facelets取代了JSP成为JSF的默认视图表示技术,提供了更清晰的结构和更好的可维护性。 8. **错误处理和验证**:JSF 2改进了错误处理和验证机制,允许开发者自定义错误消息,同时...

    JSF框架入门教程和JSF的jar包

    1. **组件库**: JSF提供了一套丰富的UI组件,如按钮、表单、表格等,开发者可以通过简单的XML标签在页面上声明这些组件。 2. **视图(View)**: 视图是用户看到和交互的部分,通常是由JSF组件组成的JSP或Facelets...

    JavaServer Faces 2.0完全参考手册(全)pdf

    1. **JSF架构**:JSF的核心是一个MVC(模型-视图-控制器)框架,其中视图由JSF UI组件构成,模型处理业务逻辑,控制器则协调它们之间的交互。JSF 2.0进一步增强了这种架构,例如通过 faces-config.xml 文件配置组件...

    jsf完全参考手册源代码

    这涉及到实现UIComponent及其子接口,并可能涉及Facelet标签库描述符(facelets.taglib.xml)。 5. **数据验证**:JSF提供了内置的验证机制,允许在提交表单前检查用户输入的有效性。通过实现Validator接口或使用...

    jsf hangman

    5. **更好的开发体验**:Facelets支持自定义标签库和更强大的条件语句、循环等。 **许可证文件:** 1. **THIRDPARTYLICENSEREADME.txt**:通常包含项目中使用的第三方库的许可证信息,确保合规性。 2. **LICENSE-...

    JSF教程合集

    1. **Facelets**:JSF的默认视图技术,用于构建声明式UI,支持模板和组件的重用。 2. **Managed Beans**:JSF中的业务逻辑容器,用于存储和管理应用的状态。 3. **EL(Expression Language)**:表达式语言,用于在...

    【读书笔记】Java参考大全-J2EE5版本

    1. **注解驱动的开发**:J2EE5引入了大量的注解,如`@WebService`、`@EJB`、`@PersistenceContext`等,这些注解大大减少了XML配置文件的使用,提高了开发效率,使得代码更加简洁易读。 2. **轻量级容器**:J2EE5...

    jsf 2.0(jar+源码+api+新特性示例)

    1. **Facelets作为默认视图技术**:Facelets取代JSP成为JSF 2.0的标准视图表示语言,提供更灵活和可维护的视图结构。 2. **无状态会话**:JSF 2.0引入了无状态会话的概念,允许服务器更高效地管理多个并发用户,...

    jsf.rar_DEMO_jsf mex

    **1. JSF组件库** JSF提供了一个丰富的组件库,包括按钮、表单、文本框、下拉菜单等常见的HTML元素。在"jsf"这个子文件夹中,我们可以预期看到这些组件在实际应用中的使用,比如在JSP或Facelets页面中。 **2. ...

    一个简单的JSF入门Demo

    ### 1. JSF框架概述 JSF框架的核心理念是将用户界面(View)、业务逻辑(Controller)和数据模型(Model)分离,使开发者能够更高效地管理Web应用的各个部分。JSF提供了自定义标签库,这些标签可以用来创建可重用的...

    OCWCD最新题库

    考生需要理解JSP语法、指令、动作标签以及EL(Expression Language)的使用,同时掌握自定义标签和JSP生命周期。 2. **Servlets**:Servlet是Java Web应用中的服务器端组件,用于处理HTTP请求。考生应熟悉Servlet的...

Global site tag (gtag.js) - Google Analytics