文档章节

Facelets 标签参考

hxzon
 hxzon
发布于 2009/03/05 23:42
字数 2074
阅读 547
收藏 2

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>

 http://www.javaeye.com/post/628412 hxzon:facelets6个模板标签,4个非模板标签,分别为
composition,decorate,define,insert,include,param,,,
component,fragment,remove,debug。

© 著作权归作者所有

hxzon
粉丝 1
博文 3
码字总数 7560
作品 0
广州
私信 提问
Facelets 标签参考 2

Facelets 标签参考 2 lxm翻译自《Facelets Essentials: Guide to JavaServer™ Faces View Definition Framework 》 不当之处欢迎指正。 这标签是开发程序时很有用的工具。在 launched 的时候...

hxzon
2009/03/05
412
0
开发自定义JSF组件(5) 在JSP中用JSF组件

完整的教材: 开发自定义JSF组件(1) HelloWorld 开发自定义JSF组件(2) 使用Render渲染器 开发自定义JSF组件(3) 使用绑定变量 开发自定义JSF组件(4) 保存状态与恢复状态 开发自定义JSF组件(5)...

zhuzhiou
2013/05/27
871
0
开发自定义JSF组件(1) HelloWorld

完整的教材: 开发自定义JSF组件(1) HelloWorld 开发自定义JSF组件(2) 使用Render渲染器 开发自定义JSF组件(3) 使用绑定变量 开发自定义JSF组件(4) 保存状态与恢复状态 开发自定义JSF组件(5)...

zhuzhiou
2013/05/19
1K
7
Apache Tobago 2.0-alpha-1,JSF 的 UI 组件

Tobago 发布 2.0 的首个 Alpha 版本,新特性包括: 暗渠 -------- * 支持 Content Security Policy (SCP) 以阻止 XSS 和相关攻击 * 阻止 frame 帧攻击 标准 --------- * 要求 JSF 2.0, 2.1 o...

红薯
2013/08/14
641
0
整合JSF与Google地图--GMaps4JSF

GMaps4JSF旨在整合JSF与Google地图。JSF用户可以通过使用几个简单的JSF标签构建complex StreetViewPanoramas和Maps。 GMaps4JSF是一个JSF Mashups类库,它使得JSF用户可以通过JSF很容易地构建...

匿名
2008/10/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
今天
5
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
今天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
今天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
今天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部