使用JSF标记

基于Facelets技术的JSF页面是一个 XHTML页面,文件扩展名为 .xhtml

1)JSF页面可用html标记,但必须满足:

①所有标记都必须闭合。如<p>开始,</p>结束;不成对的<br/>

②所有的标记名和属性名都必须为小写

③所有的属性值都应用双引号或单引号括起来

2)JSF页面主要由JSF标记组成,也可包含一些JSTL(JSP Standard Tag Library)

标记 前缀
JSF HTML标记库 h
JSF 核心标记库 f 
JSF Facelets标记库 ui
JSF 复合标记库 composite
JSTL 核心标记库 c
JSTL函数标记库 fn

JSF HTML标记库(h):代表某种UIComponnet组件与某个呈现器的一种组合

JSF 核心标记库(f):执行一些与任何特定的呈现包无关的核心动作

JSF Facelets标记库(ui):使用模板时需要的标记,模板封装了页面布局、样式和内容的单个模式,也可以在多个页面中重用这个模板,使页面有一致的外观。

3)JSF HTML标记库中标记的使用

对文本域组件标记 h:inputText

       组件名:javax.faces.Input

 呈现器型名:javax.faces.Text

①id的使用

UIViewRoot root=FacesContext.getCurrentInstance().getViewRoot();//获取组件树的根

UIComponent component=root.findComponent("form1:input1");//返回指定客户端标识符的组件对象

form1为h:form的id;input1来自h:inputText的id。

②immediate(处理时期)

输入类组件和动作组件通常可以设置immediate,默认为false。

false:数据(输入)在“处理验证”时被转换和验证;动作事件会在“调用应用”阶段处理。

true:数据的转换、验证以及事件处理会在“应用请求值”立即进行。

备注:请求处理生命周期有 恢复视图、应用请求值(提交动作)、处理验证、更新模型值。调用应用(监听器)、呈现响应。

③rendered(呈现)

通常为一个boolean型EL表达式,JSF框架由rendered值决定组件是否被呈现

如:rendered="#{showReply.page[0] gt 2}"

又如:rendered="#{i==showReply.currentPage}"

④style和styleClass:

为组件的呈现输出指定CSS样式

style:指定CSS样式并作为呈现产生的HTML标记的style属性值;

如:style="margin-left:5px; margin-right:5px"

styleClass:指定CSS样式类并作为呈现产生的HTML标记的class属性值

如:styleClass="font3" 其中font3在CSS文件中为样式类。

⑤value

用于设置组件值。可以为普通的字符串文本,但常为 EL值表达式,使组件值与受管Bean的某个属性绑在一起

如 value="回复主题" 或:value="#{showReply.replys}"

⑥binding(将组件绑定至UIComponent)

如:<h:selectOneMenu id="selectMaterLog" value="..." ...binding="#{Masterlogs.logSelectField}">....</h:selectOneMenu>

binding属性是将h:selectOneMenu这个控件赋值给名称为Masterlogs的JavaBean的logSelectField属性,从而能够在Masterlogs这个JavaBean的方法中获取或者操作h:selectOneMenu这个控件的值

EL值表达式的类型必须与标记代表的组件类型相容

⑦title为该组件呈现产生的标记元素指定标题信息。Web浏览器通常会将该信息以即时提示的方式显示出来。

4)基本输入类标记

①标记功能

-h:inputText 文本域,用于接收一行文本

-h:inputSecret 口令域,用于接收一行不含空格的文本,输入时显示“ * ”;

-h:inputTextArea 文本区,用于接收多行文本

-h:inputHidden 隐藏域,允许在表单中隐藏一个数据,以便在表单提交时,该数据能送回带给服务器。

②常用 属性

-size 文本域或口领域的宽度(列数)

-maxlength 文本域或口领域最多可以输入的字符数

-cols、rows 文本区的宽度(列数)和高度(行数)

-disabled 是否禁用(隐藏域除外)。也适用于选择等输入标记、以及动作标记等。

-label 在错误消息中使用的组件名称(隐藏域除外)

-accesskey 指定访问键(隐藏域除外)。ALT+访问键激活当前组件也适用于选择等输入标记、以及动作标记和h:outputLabel

      当h:outputLabel指定访问键,用于按下时,将激活与该标签相关联的组件,如焦点文本域、选中复选框。

-readonly 是否只读(隐藏域除外),也适用于选择等输出标记

-redisplay 指定在呈现是否包含组件值,仅适用于口领域标记。默认为false。

-required 指定用户是否必须输入,默认为true。

-requiredMessage 用户没有填必填时提示的错误消息

-validator 指定一个方法表达式,引用受管bean的一个方法,该方法称为验证方法。一般在“处理验证”阶段被调用。

如: validator="#{inputTopic.validator}"

-validatorMessage 指定验证错误信息,将代替由任何验证器产生的错误信息,在验证出错时显示。

如:validatorMessage="长度不能超出1000个字符"

5)基本输出标记

①标记功能

-h:outputText 显示由value指定的文本,需要时可用style和 styleClass指定显示格式

-h:outputLabel 显示一串文本作为输入组件的标签,由for指定相关的输入组件。单击标签时会聚焦相关输入组件

        如<h:outputLabel for="input1" value="标题"/>

-h:outputFormat 显示参数化文本,value:称为消息模板的特殊字符串;{ }中的数字 代表 一个参数,参数值由嵌套于该标记的核心标记f:param的value指定

        如<h:outputFormat value="{0}今年{1}岁,{0}是一名学生。"/>

       <f:param value="LiMing"/>  <f:param value="19"/> </h:outputFormat>

-h:outputLink 呈现一个HTML超链接,单击链接产生请求。value指定目标连接的URL,可为相对URL或者绝对URL。

      若以斜杠(/)开头,则相对web容器目录;

      若不以(/)开头,则相对于当前页面所在路径。

      如<h:outputLink value="/web/faces/resp.xhtml"/>中间内容为超链接文本,可以使用其他标记如h:outputText或h:graphicImage等</h:outputLink>

②常用属性

-escape 是否对特殊字符(如<、>、&)进行转义处理,默认为true。如 <转义&lt   >转义&gt   &转义&amp

    若为false,则被浏览器解释,用于outputText、outputLabel、outputFormat

-target 指定目标资源打开的位置;默认为当前窗口。设为"_brank"则在新窗口打开。也可以指定名称,在指定的窗口或者标签打开。

    用于h:outputlLink、h:form、h:commandLink 和 h:Link标记。

6)图像标记

-h:graphicImage 显示一幅图像,属性url指定图像URL;可用width和height设置高度和宽度。

7)动作类标记

①标记功能

-h:commandButton 动作按钮

type 按钮类型,默认为submit,产生提交按钮,单击产生postback请求、引发动作事件;如果为reset,不产生HTTP请求,重写状态。

value 按钮的标题

image 图片按钮,设置一个图像的url,为提交按钮。则type和value被忽略。

-h:commandLink 与h:outputLink相比,它也产生一个超链接,即<a>元素,能嵌套outputText和graphicImage指定超链接的文本或图像,也可用value指定超链接文本。

②常用属性

-action 动作方法。 public String<方法名>()   public Object<方法名>

-actionListener 动作监听方法。  public void<方法名>(Action Event)  public void <方法名>()

-target 指定响应内容显示的位置。但是h:commandButton没有这个属性,不过可以在h:form中设置。

8)二选一标记(我比较喜欢叫它“选不选标记”)

-h:selectBooleanCheckbox 显示一个复选框。value通常绑定到受管bean的一个布尔型属性上。

如<h:selectBooleanCheckbox id="bc" value="#{index.accpet}"/>

 <h:outputLabel for="bc" value="接受条款?"/>

9)单选类标记

①标记功能

-h:selectOneRadio 单选按钮组,单击按钮图标或者标签进行选择

-h:selectOneListbox 单选列表框。size显示选项数(单击滚动条或下拉按钮显示其它选项)。若不指定size,其它选项则并排同时显示。

-h:selectOneMenu 单选菜单(下拉菜单)。无size属性。一次仅显示一个选择。(单击下拉按钮可显示所有选项)

②常用属性

-border 边框,适用于selectOneRadio和selectManyCheckbox

-hideNoselectionOption 当组件被用户激活时,非选择项是否被隐藏。适用于所有选择类标记。

-layout lineDirection(默认线型横向) pageDirection(竖型)。适用于selectOneRadio和selectManyCheckbox

③选项设置

无论单选、多选标记,其选项都由f:selectItem或/和 f:selectItems字标签提供。如:

性别

<h:selectOneRadio value="#{index.gender}">

<f:selectItem itemLabel="男" itemValue="male"/>

<f:selectItem itemLabel="女" itemValue="female"/>

</h:selectOneRadio>

④f:selectItem 指定单个选项,属性有:

-itemLabel 显示的文字(String)

-itemValue 选项值,作为请求参数送往服务器(Object)

-itemDisable 选项是否被禁用(Boolean)

-noSelectionOption 是否为专门的“非选择项”,缺省值为false

-value 组件值(值表达式),指向一个SelectItem实例。

⑤f:selectItems 标记指定一组选项

标记的value必须是指向下面对象之一的值表达式:

-单个SelectItem实例

-SelectItem实例集合

-SelectItem实例数组

-一个映射,其条目的键和值分别代表选项的标签和值。

10)多选类标记

①标记功能

可以选择多个,组件值通常为数组

-h:selectManyCheckbox 复选框组

-h:selectManyListbox 多选列表框,size指定显示的选项数。按住ctrl再单击选择(或取消选择)其余各项。按shift再单击可选连续多项。

-h:selectManyMenu 多选菜单。无size,每次仅显示一项,可选多项

②常用属性

-collectionType 多选组件的value应为数组或集合(Collection)。如果value把绑定在受管bean的某个集合类型属性上,而该集合类型是接口或抽象类(如List、Set等),那么可以用该collectionType属性指定一个相应的具体类型。

-selectedClass、unselectedClass 指定CSS样式类,分别应用于已选与未选的选项显示。仅适用于h:selectManyCheckbox。

11)消息标记

JSF在处理请求的可能产生各种消息,包括:

1.标准转换器或自定义转换器在转换组件值类型时产生的错误信息

2.设置了required的组件未获得输入值时产生的错误信息

3.在1.中两种转换器在验证组件值时产生的错误信息

4.由应用代码根据需要自主产生的各种消息

①FacesMessage类

每个消息包含三个属性:概要文本(summary)、详细文本(detail)和严重级别(severity)。用FacesMessage实例表示:

public FacesMessage(){ }无参。一个、两个、三个参数的构造函数(省略不写)。

严重级别(severity)有4种

-FacesMessage.SEVERITY_INFO      信息级别

-FacesMessage.SEVERITY_WARN    警告级别

-FacesMessage.SEVERITY_ERROR  错误级别

-FacesMessage.SEVERITY_FATAL    致命级别

FacesContext对象的addMessage方法用于将消息放入队列:

public void abstract addMessage(String clientId,FacesMessage message)

②h:message标记

消息标记,用于显示组件信息 for属性指定组件id。

③h:messges标记

消息组标记,用于显示全局消息和组件消息。

JSF-使用JSF标记的更多相关文章

  1. [转载][翻译] 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述

    [原作者] Derek Yang Shen[原文链接] http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html[源码链接] htt ...

  2. JSF Web框架与Facelets表现层技术

    JSF(JavaServer Faces) JSF应用程序的生命周期从客户端对页面发出HTTP请求时开始,并在服务器响应页面时结束.JSF生命周期分为运行阶段和渲染阶段两个主要阶段. 执行阶段 当第一 ...

  3. JSF 与 HTML 标签的联系

    *页面的开头 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ t ...

  4. Myeclipse2014配置JSF环境

    首先创建一个普通的webproject,然后看官网教程喽 https://www.genuitec.com/products/myeclipse/learning-center/web/myeclip ...

  5. JSF 2.0 hello world example

    In this tutorial, we will show you how to develop a JavaServer Faces (JSF) 2.0 hello world example, ...

  6. JavaServer Faces (JSF) with Spring

    JavaServer Faces (JSF) with Spring Last modified: April 30, 2018 by baeldung Spring+ Spring MVC JSF ...

  7. JSF学习实战

    JSF是什么? JSF(JavaServer Faces)它是一个基于服务器端组件的用户界面框架. 它用于开发Web应用程序.它提供了一个定义良好的编程模型,由丰富的API和标签库组成.JSF API ...

  8. Ajax4Jsf 简单介绍

    Ajax4jsf 允许开发人员将 Ajax 功能添加到 JSF 应用程序中,而不需要 JavaScript 或用 Ajax 图形部件替换现有的组件.这个包还允许在使用 Java 2D 库时动态地生成图 ...

  9. (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)

    (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...

随机推荐

  1. pig加载两个不同字段个数的文件?load file with different items(f1有42列,f2有43列读到一个对象中)

    我文章提到,加载一个文件的部分列是可行.两列,你只读一列,没问题. 但是,两个文件,f1和f2,f1有42列,f2有43列,同时加载到一个流对象,如何? 答:成功加载.但是无结构(schema unk ...

  2. go: 一个通用log模块的实现

    在go里面,虽然有log模块,但是该模块提供的功能并不强,譬如就没有我们常用的level log功能,但是自己实现一个log模块也并不困难. 对于log的level,我们定义如下: const ( L ...

  3. web安全认证机制知多少

    如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制 ...

  4. UITableViewBase&nbsp;UI_09

    1.UITableView API文档总结:      1.UITableView的父类时,UIScrollView,所以它是可以滚动的,但是只能在竖直方向滚动. 2.UITableView是iOS中 ...

  5. C++对象模型(五):The Semantics of Data Data语义学

    本文是<Inside the C++ Object Model>第三章的读书笔记.主要讨论C++ data member的内存布局.这里的data member 包含了class有虚函数时 ...

  6. C语言通讯录管理系统

    本文转载自:http://blog.csdn.net/hackbuteer1/article/details/6573488 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能. ...

  7. Python基础 语法特别注意笔记(和Java相比)

    Python变量和数据类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...

  8. Python学习笔记 - 生成器generator

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # generator 生成器 L = [x * x for x in range(10)] print( ...

  9. Dynamics CRM2013/2015 禁止欢迎界面(Disable the Welcome Screen)

    首次打开Dynamic CRM  2013会出现一个欢迎界面如下图,要想它不出现勾选图中的复选框就行,OK下回再打开就没有了. 但是当我们打开F12开发人员工具,清除域的缓存后再次打开CRM,这个欢迎 ...

  10. 《java入门第一季》之Integer类和自动拆装箱概述

    / * int 仅仅是一个基本类型.int有对应的类类型,那就是Integer.  * 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型--包装类类型 ...