JSF-使用JSF标记
使用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。如 <转义< >转义> &转义&
若为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标记的更多相关文章
- [转载][翻译] 利用JSF、SpringFramework和Hibernate构建Web应用的实例讲述
[原作者] Derek Yang Shen[原文链接] http://www.javaworld.com/javaworld/jw-07-2004/jw-0719-jsf.html[源码链接] htt ...
- JSF Web框架与Facelets表现层技术
JSF(JavaServer Faces) JSF应用程序的生命周期从客户端对页面发出HTTP请求时开始,并在服务器响应页面时结束.JSF生命周期分为运行阶段和渲染阶段两个主要阶段. 执行阶段 当第一 ...
- JSF 与 HTML 标签的联系
*页面的开头 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ t ...
- Myeclipse2014配置JSF环境
首先创建一个普通的webproject,然后看官网教程喽 https://www.genuitec.com/products/myeclipse/learning-center/web/myeclip ...
- 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, ...
- JavaServer Faces (JSF) with Spring
JavaServer Faces (JSF) with Spring Last modified: April 30, 2018 by baeldung Spring+ Spring MVC JSF ...
- JSF学习实战
JSF是什么? JSF(JavaServer Faces)它是一个基于服务器端组件的用户界面框架. 它用于开发Web应用程序.它提供了一个定义良好的编程模型,由丰富的API和标签库组成.JSF API ...
- Ajax4Jsf 简单介绍
Ajax4jsf 允许开发人员将 Ajax 功能添加到 JSF 应用程序中,而不需要 JavaScript 或用 Ajax 图形部件替换现有的组件.这个包还允许在使用 Java 2D 库时动态地生成图 ...
- (私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例)
(私人收藏)[开发必备]最全Java离线快速查找手册(可查询可学习,带实例) https://pan.baidu.com/s/1L54VuFwCdKVnQGVc8vD1TQnwmj java手册 Ja ...
随机推荐
- pig加载两个不同字段个数的文件?load file with different items(f1有42列,f2有43列读到一个对象中)
我文章提到,加载一个文件的部分列是可行.两列,你只读一列,没问题. 但是,两个文件,f1和f2,f1有42列,f2有43列,同时加载到一个流对象,如何? 答:成功加载.但是无结构(schema unk ...
- go: 一个通用log模块的实现
在go里面,虽然有log模块,但是该模块提供的功能并不强,譬如就没有我们常用的level log功能,但是自己实现一个log模块也并不困难. 对于log的level,我们定义如下: const ( L ...
- web安全认证机制知多少
如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制 ...
- UITableViewBase UI_09
1.UITableView API文档总结: 1.UITableView的父类时,UIScrollView,所以它是可以滚动的,但是只能在竖直方向滚动. 2.UITableView是iOS中 ...
- C++对象模型(五):The Semantics of Data Data语义学
本文是<Inside the C++ Object Model>第三章的读书笔记.主要讨论C++ data member的内存布局.这里的data member 包含了class有虚函数时 ...
- C语言通讯录管理系统
本文转载自:http://blog.csdn.net/hackbuteer1/article/details/6573488 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能. ...
- 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 ...
- Python学习笔记 - 生成器generator
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # generator 生成器 L = [x * x for x in range(10)] print( ...
- Dynamics CRM2013/2015 禁止欢迎界面(Disable the Welcome Screen)
首次打开Dynamic CRM 2013会出现一个欢迎界面如下图,要想它不出现勾选图中的复选框就行,OK下回再打开就没有了. 但是当我们打开F12开发人员工具,清除域的缓存后再次打开CRM,这个欢迎 ...
- 《java入门第一季》之Integer类和自动拆装箱概述
/ * int 仅仅是一个基本类型.int有对应的类类型,那就是Integer. * 为了对基本数据类型进行更多的操作,更方便的操作,Java就针对每一种基本数据类型提供了对应的类类型--包装类类型 ...