`
tuxq5721
  • 浏览: 34487 次
社区版块
存档分类
最新评论

JSF —— Facelets 标签

阅读更多

          最初是作为对JSF 1.x中基于JSP的视图处理程序的替代而开发的。在JSF2.0中,Facelets作为JSF的默认视图技术来替换JSP。除了是一种更好的视图处理程序外,Facelets还支持大量用于模板化和其他目的的标签。

 

命名空间:

xmlns:ui="http://java.sun.com/jsf/facelets"

 

Facelets 标签

可将Facelets标签分为如下几个类型:

  • 包含来自其他XHTML页面的内容(ui:include)

  • 利用模板生成页面(ui:compostion、ui:decorate、u:insert、ui:define、ui:param)

  • 无须编写Java代码创建自定义组件(ui:component、ui:fragment)

  • 其他实用工具(ui:debug、ui:remove、ui:repeat)

标签

说明

<ui:include>

包含来自另一个XHTML文件的内容

<ui:compostion>

如果不使用template属性,组合是一连串可插入到其他地方的元素。组合可以具有可变部分(使用ui:insert子标签指定)。

如果使用template属性,则加载该模板。该标签的子标签确定模板的可变部分。模板内容替换该标签。

<ui:decorate>

如果不使用template属性,ui:decorate指定可以插入部分的页面。使用ui:insert子标签指定变量部分。

如果使用template属性,则加载该模板。该标签的子标签确定了模板的可变部分。

<ui:define>

定义了使用匹配ui:insert插入到模板中的内容。

<ui:insert>

将内容插入到模板中。在加载了该模板的标签中定义该内容。

<ui:param>

指定一个传入到所含文件或者模板的参数。

<ui:component>

该标签类似于ui:composition,唯一不同的是它创建了一个添加到组件树的组件。

<ui:fragment>

类似于ui:decorate,不同之处在于它创建了一个添加到组件树的组件。

<ui:debug>

使用户通过键盘快捷键显示调试窗口,其中显示了当前页面的组件层次结果和应用程序作用域内的变量。

<ui:remove>

JSF移除ui:remove标签中的所有内容。

<ui:repeat>

迭代列表、数组、结果集合或单个对象。

 

<ui:include>

 

<ui:include>标签用来在文件中包含另外一个Facelets文件 , 它只需要指定被包含文件的位置。

它可以包含任何拥有 ui:componentui:composition等标签或是简单的XHTMLXML 代码片断的文件。

 

Attributes

属性名称

必需

描述

src

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

 

可用子元素

<ui:param>

设置EL变量,在被包含的Facelets文件中使用。

 

<ui:composition>

 

<ui:composition> 标签是一个模板标签,它将一些可以被其它Facelets 页面所包含的内容封装起来。

标签以外的内容将被编译器忽略

 

Attributes

属性名称

必需

描述

template

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

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

 

<ui:component> 的异同

相同点:标签以外的内容被编译器忽略 ,不会显示在视图中 。

不同点:ui:composition 不会在组件树上创建节点。

 

 

<ui:decorate>

 

<ui:decorate>标签是一个模板标签,它将一些可以被其它Facelets 页面所包含的内容封装起来。

标签外部的内容编译时会被包含进来

 

Attributes

属性名称

必需

描述

template

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

与 <ui:fragment> 的异同

相同点:标签外部的内容编译时会被包含进来。

不同点:<ui:fragment>不会在组件上创建节点。

 

 

<ui:define>

 

ui:define 标签用于将命名的内容插入到模板中 , 它在模板标签(如compositiondecorate)的内部使用。

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

 

Attributes

属性名称

必需

描述

name

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

 

 

<ui:insert>

 

ui:insert标签用来在模板中指定一个插入点,可以被客户端模板中 ui:define定义的内容所代替。

 

Attributes

属性名称

必需

描述

name

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

<ui:param>

 

指定一个传入到所含文件或者模板的参数。

 

Attributes

属性名称

必需

描述

name

参数名

value

参数值

<ui:component>

 

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

标签以外的内容将被编译器忽略

 

Attributes

属性

必需

描述

id

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

binding

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

 

Example

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

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

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

</ui:component>

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

The directory contains #{totalBirds} birds!

 

<ui:fragment>

 

<ui:fragment>标签在 JSF 组件树中插入一个UIComponet实例,并作为标签内部所有它所包含的组件或内容片断的根节点 。

标签外部的内容编译时会被包含进来

 

Attributes

属性名称

必需

描述

id

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

binding

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

 

Example

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

 

当在Facelets页面中放置<ui:debug>标签时,调试组件会添加到该页面的组件树中。

如果用户输入热键(默认情况下是CTRL +SHIFT + D),JSF将打开一个窗口并显示组件树和应用程序作用域内变量的状态。

 

重新定义生成Debug Output窗口的热键

<ui:debughotkey="k"/>

 

上述ui:debug的用法将热键重新定义为CTRL + SHIFT + K

 

<ui:remove>

<!-- … -->的问题

例如如下代码:

<!--

<h:commandButton id="loginButton" value="#{msgs.lgoinButtonText}" action="planetarium" />

-->

如果#{msgs.loginButtonText}的计算结果是“Log In”,将在生成的HTML页面中可以看到如下结果:

<!--

<h:commandButton id="loginButton" value="Login" action="planetarium" />

-->

 

该使用ui:remove

<ui:remove>

<h:commandButtonid="loginButton"value="#{msgs.lgoinButtonText}"action="planetarium"/>

</ui:remove>

 

XHTML页面添加JavaScript代码问题

<scripttype="text/javascript">

if(1> 10){

}

</script>

上面的代码应改成:

<scripttype="text/javascript">

if(1 &gt; 10){

}

</script>

或:

 

 

<ui:repeat>

迭代列表、数组、结果集合或单个对象。

  • 迭代时,它迭代数组、列表和结果集等中的每一项。项的名称由var属性指定。如果value属性指定的是Java对象,那么只迭代一次,使对象能在标签主体中使用。

 

Attributes

属性名称

必需

默认值

描述

offset

0

遍历开始处的索引

step

1

连接索引值之间的差值

size

(集合大小 - offset/ step

迭代次数

var

 

当前遍历的对象

value

 

遍历的对象。该对象可以是普通Java对象、数组、集合java.sql.ResultSetjavax.servlet.jsp.jstl.sql.Resultjavax.faces.model.DataModel

varStatus

 

当前的迭代状态

varStatus

特性        

Getter                      

描述  

current   

getCurrent()          

当前这次迭代的(集合中的)项 

index      

getIndex()              

当前这次迭代从 0开始的迭代索引 

count      

getCount()            

当前这次迭代从 1开始的迭代计数 

first         

isFirst()                 

用来表明当前这轮迭代是否为第一次迭代的标志 

last         

isLast()                 

用来表明当前这轮迭代是否为最后一次迭代的标志 

begin     

getBegin()            

begin属性值  

end        

getEnd()                

end 属性值  

step       

getStep()               

step属性值 

 

分享到:
评论

相关推荐

    jsf学习必备——实用工具书

    "jsf学习必备——实用工具书"很可能包含了一份详细教程或指南,帮助初学者快速上手JSF。 JSF的基础知识: 1. **模型-视图-控制器(MVC)架构**:JSF是基于MVC设计模式的,其中模型负责业务逻辑,视图负责用户界面...

    第6章 JSF标签 课件及示例程序

    本章主要聚焦于JSF中的一个重要组成部分——JSF标签,它是用来构建动态、交互式用户界面的组件。 JSF标签在HTML或XML文档中使用,类似于JSP标签,但它们提供了更高级的功能和灵活性。这些标签对应于JSF组件,这些...

    Facelets Essentials - APRESS

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

    facelet.pdf

    特别是其视图技术——Facelets,更是为JSF注入了新的活力。 #### 三、JSF视图技术:JSP与Facelets ##### 3.1 JSP作为JSF的默认视图技术 - **优点**:作为J2EE标准的一部分,JSP提供了稳定且成熟的视图解决方案。 - ...

    一个简单的jsf例子------JSF2学习笔记1

    **JSF2学习笔记1——理解JavaServer Faces 2.0框架** JavaServer Faces (JSF) 是一种基于组件的Web应用程序开发框架,由Sun Microsystems(现为Oracle Corporation的一部分)开发,旨在简化用户界面构建。JSF2是该...

    JSF-Demo.rar_DEMO_jsf demo down load

    本DEMO——"JSF-Demo.rar" 是一个适用于初学者的实践项目,旨在帮助学习者快速理解和掌握JSF的基本概念和使用方法。 在"第14章JSF代码"这个压缩包中,我们可以期待找到以下几个关键的知识点: 1. **JSF基本概念**...

    myblogger

    今天,我们将深入探讨一个由个人开发的JSF博客系统——"myblogger",它是专为初学者设计的,旨在帮助他们更好地理解和掌握JSF的核心概念。 “myblogger”项目首先展示了JSF的基础架构。JSF的核心是组件模型,它允许...

    Spring Security Annotation tutorial

    为了方便地在 JSF 页面中实现基于角色的安全控制,Spring Security 提供了一套专门针对 Facelets 的标签库。该标签库的主要作用是根据用户的权限来显示或隐藏页面上的元素。以下是该标签库的基本结构: ```xml ...

    语言技术语言技术

    JSF通过明确区分开发者的角色——网页设计人员、应用程式设计人员和UI元件开发人员,使得团队协作更加高效。以下是关于JSF的详细知识点: 1. **组件化开发**: - JSF的核心是组件模型,它允许开发者创建可重用的UI...

    mojarra-2.0.0-EDR1-binary.zip

    "mojarra-2.0.0-EDR1-binary.zip" 文件中包含的是JSF 2.0的第一个草稿版本——2.0.0 Early Development Release 1 (EDR1),虽然它标记为草稿,但其稳定性和功能性已经足够供开发者使用和探索。 **JSF 2.0 的核心...

    book-java-server-faces-jsf:2013年-我的书的JSF源代码。 (JSF kitapkodlarım。)-java source code

    《JSF源代码详解——基于2013年的"我的书"项目》 Java Server Faces (JSF) 是一个用于构建Web应用程序的Java框架,它为开发者提供了丰富的组件库和事件处理模型。在这个名为"book-java-server-faces-jsf"的项目中,...

    网上书店(cdstore)

    《网上书店(cdstore)——基于Java和JSF的简易购物车系统详解》 网上书店(cdstore)是一个采用Java技术和JavaServer Faces (JSF)框架构建的简单购物车应用程序。这个项目旨在提供一个基础的在线购书平台,让学习...

    简单的博客系统

    此外,JSF还提供了Facelets作为视图层模板技术,使得页面布局和逻辑分离,提高代码的可维护性。在本博客系统中,JSF标签被用来创建动态的、交互式的博客文章列表、详情页和评论功能。 **数据库设计——SQL Server**...

    帮助文档——j2ee帮助文档!

    3. **JSF 1.2**:进一步完善了UI组件模型,增强了与Facelets技术的整合。 4. **JavaServer Pages (JSP) 2.1** 和 **Servlet 2.5**:继续优化了Web开发的APIs,增加了更多功能。 5. **JavaMail API** 和 **JavaBeans ...

    Term-5-JSF:此存储库用于编写 Java-Server Faces 代码

    6. **状态管理**:JSF支持两种状态管理方式——无状态和有状态。无状态意味着每个请求独立处理,而有状态则会在请求之间保存组件的状态,适用于需要保持用户会话的应用。 7. **依赖注入**:JSF 2.0引入了CDI...

Global site tag (gtag.js) - Google Analytics