【转】JSF中的三大核心组件 UI标签的详细介绍和使用举例
JSF提供了大量的UI标签来简化创建视图。这些UI标签类似于ASP.NET中的服务器组件。使用这些标签,可以通过其value,binding,action,actionListener等属性直接绑定到托管Bean的属性,实例或者方法上。
b、 JSF提供的UI标签,应用界面的UI标签直接绑定到托管Bean
c、 页面导航规则
下面我们就来介绍UI标签:
JSF与JSP的标签的区别在于,JSF的标签可以使用value,binding,action和actionListener等属性直接绑定到托管Bean上面去。
JSF包括两组标签库:jsf_core.tld核心标签库和html_basic。tld HTML标签库。
- f:actionListener
- f:attribute
- f:convertDateTime
- f:convertNumber
- f:converter
- f:facet
- f:loadBundle
- f:param
- f:phaseListener
- f:selectItem
- f:selectItems
- f:setPropertyActionListener
- f:subview
- f:validateDoubleRange
- f:validateLength
- f:validateLongRange
- f:validator
- f:valueChangeListener
- f:verbatim
- f:view
关于个标签的详细介绍,可以参考JSF自带的帮助文档:
- JSF解压目录\tlddocs\index.html
- h:commandButton
- h:commandLink
- h:dataTable
- h:form
- h:graphicImage
- h:inputHidden
- h:inputSecret
- h:inputText
- h:inputTextarea
- h:message
- h:messages
- h:outputFormat
- h:outputLabel
- h:outputLink
- h:outputText
- h:panelGrid
- h:panelGroup
- h:selectBooleanCheckbox
- h:selectManyCheckbox
- h:selectManyListbox
- h:selectManyMenu
- h:selectOneListbox
- h:selectOneMenu
- h:selectOneRadio
- h:column
关于个标签的详细介绍,可以参考JSF自带的帮助文档:
- JSF解压目录\tlddocs\index.html
JSF的UI大都会生成一个或多个HTML标签,所以使用这些UI标签有时一些属性是通用的:
- id
- immediate:是否立即处理UIInput组件和实现了ActionSource接口的UI组件上事件
- rendered:指定条件表达式,当条件表达式为true时才会绘制组件
- required:指定用户是否必须为组件输入值
- requeredMessage:与requered一起使用,如果没有输入时提示信息
- value:该组件的值绑定到托管对象上
- onblur
- onchange
- onclick
- ondblclick
- onfocus
- onkeydown
- onkeypress
- onkeyup
- onmousedown
- onmousemove
- onmouseout
- onmouseover
- onmouseup
- style
- styleClass
- binding:将组件本身绑定到托管Bean
locale:指定国家语言
renderKitId:JSF根据该属性值选择对应的绘制器工具箱来绘制该页面
beforePhase:绑定生命周期监听器(必须有public void beforePhase(Java.faces.event.PhaseEvent)形式的签名),JSF会在每个生命周期阶段(除了恢复视图)之前调用该方法。
afterPhase:绑定生命周期监听器(必须有public void afterPhase(java.faces.event.PhaseEvent)形式的签名),JSF会在每个生命周期阶段(除了恢复视图)之后调用该方法。
- <f:view>
- <h1>表单标签</h1>
- <h:form>
- 单行文本框:<h:inputText value="#{userbean.username }" /><br />
- 密码框:<h:inputSecret value="#{userbean.password }" /><br />
- 多行文本区:<h:inputTextarea rows="3" cols="20" /><br />
- 隐藏域:<h:inputHidden value="#{userbean.message }" /><br />
- </h:form>
- </f:view>
其中<h:inputText>和<h:inputSecret>可以指定一个size属性用于指定输入框的最大长度。
- <h1>多选标签的使用</h1>
- <h:form>
- <!-- 复选框 -->
- <h:selectManyCheckbox value="#{userbean.booklist }">
- <f:selectItem itemLabel="Core Java" itemValue="Java" />
- <f:selectItem itemLabel="Thinking in C++" itemValue="C++" />
- <f:selectItem itemLabel="Spring Internals" itemValue="Spring" />
- </h:selectManyCheckbox>
- <!-- 生成一个允许多选的列表框 -->
- <h:selectManyListbox value="#{userbean.booklist }" size="5">
- <f:selectItem itemLabel="Core Java" itemValue="Java" />
- <f:selectItem itemLabel="Thinking in C++" itemValue="C++" />
- <f:selectItem itemLabel="Spring Internals" itemValue="Spring" />
- </h:selectManyListbox>
- <!-- 生成一个允许多选的复合框 -->
- <h:selectManyMenu value="#{userbean.booklist }">
- <f:selectItem itemLabel="Core Java" itemValue="Java" />
- <f:selectItem itemLabel="Thinking in C++" itemValue="C++" />
- <f:selectItem itemLabel="Spring Internals" itemValue="Spring" />
- </h:selectManyMenu>
- </h:form>
使用上面的三个标签必须与<f:selectItem>或者<f:selectItems>标签结合使用,其中的<f:selectItem>3个属性的含义:
itemValue:指定生成列表项或者复选框的值
value:与其他的UI标签的value属性不同,不是将该组件的值绑定到托管Bean,而是将该组件本身绑定到托管Bean
这三个标签的value属性值必须是一个List或者数组。
- <h1>单选标签的使用</h1>
- <h:form>
- <!-- 生成一组单选按钮 -->
- <h:selectOneRadio value="userbean.booklist">
- <f:selectItem itemLabel="Core Java" itemValue="Java" />
- <f:selectItem itemLabel="Thinking in C++" itemValue="C++" />
- <f:selectItem itemLabel="Spring Internals" itemValue="Spring" />
- </h:selectOneRadio>
- <!-- 生成一个只允许单选的列表框 -->
- <h:selectOneListbox value="userbean.booklist" size="5">
- <f:selectItem itemLabel="Core Java" itemValue="Java" />
- <f:selectItem itemLabel="Thinking in C++" itemValue="C++" />
- <f:selectItem itemLabel="Spring Internals" itemValue="Spring" />
- </h:selectOneListbox>
- <!-- 生成一个只允许单选的下来菜单 -->
- <h:selectOneMenu value="#{userbean.booklist }">
- <f:selectItem itemLabel="Core Java" itemValue="Java" />
- <f:selectItem itemLabel="Thinking in C++" itemValue="C++" />
- <f:selectItem itemLabel="Spring Internals" itemValue="Spring" />
- </h:selectOneMenu>
- </h:form>
这三个标签和前面介绍的三个标签的功能基本相似,只是这里的只能单选。
- <h:selectBooleanCheckbox />
在页面上生成一个复选框,用于勾选或者取消勾选该复选框
与上面三个复选框不同,它的value属性必须绑定到托管Bean中boolean类型的属性,不需要与<f:selectItem>标签一起使用。
- <h1>UICommand组件的使用</h1>
- <h:form>
- <!-- 生成一个可以提交表单的按钮 -->
- <h:commandButton value="点击" />
- <!-- 生成一个图片按钮 -->
- <h:commandButton image="images/01.jpg" />
- <!-- 生成一个可以提交表单的超链接 -->
- <h:commandLink value="提交表单" />
- <!-- 生成一个可以提交表单的图片链接 -->
- <h:commandLink shape="circle" coords="20,20,10">
- <img src="data:images/01.jpg" />
- </h:commandLink>
- </h:form>
- <h1>UIOutput对应的输出组件的使用</h1>
- <!-- 使用outputText标签输出国际化资源 -->
- <h:outputText value="#{userInfo.username }" />
- <!-- 使用outputText标签输出Bean属性 -->
- <h:outputText value="#{userbean.username }" />
- <!-- 生成Label标签 -->
- <h:outputLabel value="#{userbean.username }" />
- <!-- 生成超链接 -->
- <h:outputLink value="http://www.itzhai.com">IT宅</h:outputLink>
- <!-- 输出带占位符的国际化消息 -->
- <h:outputFormat value="#{userInfo.message }">
- <f:param value="arthinking" />
- </h:outputFormat>
这里使用到了国际化资源,需要创建:
在faces-config.xml问价中加载国际化资源的配置:
- <application>
- <resource-bundle>
- <base-name>com.itzhai.user</base-name>
- <var>userInfo</var>
- </resource-bundle>
- </application>
然后在com.itzhai目录下创建一个国际化资源文件的basename为user:
- username="arthinking"
- message=用户名:{0}
- <h1>panelGrid标签的使用</h1>
- <h:panelGrid columns="3" width="300px" border="1">
- <!-- 生成表格标题 -->
- <f:facet name="caption">
- <h:outputText value="表格标题" />
- </f:facet>
- <!-- 生成表格头 -->
- <f:facet name="header">
- <h:outputText value="表格头" />
- </f:facet>
- <h:outputText value="1" />
- <h:outputText value="2" />
- <h:outputText value="3" />
- <!-- panelGroup的使用 -->
- <h:panelGroup layout="block" style="color:#cfcfff">
- <h:outputText value="4" />
- <h:outputText value="5" />
- </h:panelGroup>
- <h:outputText value="6" />
- <h:outputText value="7" />
- </h:panelGrid>
panelGrid用于生成表格,panelGroup用于把多个元素组成一个元素。
- <h1>dataTable的使用</h1>
- <h:dataTable width="600px" border="1" value="showbook.bookList" var="book" rowClasses="odd,even">
- <!-- 使用facet生成caption -->
- <f:facet name="caption">
- <h:outputText value="book list" />
- </f:facet>
- <!-- 定义第一列 -->
- <h:column>
- <f:facet name="header">
- <h:outputText>图书名</h:outputText>
- </f:facet>
- <h:inputText value="#{book.name }" size="3" />
- </h:column>
- <!-- 定义第二列 -->
- <h:column>
- <f:facet name="header">
- <h:outputText>图书分类</h:outputText>
- </f:facet>
- <h:outputLink value="#{book.url }">
- <h:inputText value="#{book.bookClass }" />
- </h:outputLink>
- </h:column>
- <!-- 生成表格底部 -->
- <f:facet name="footer">
- <h:panelGroup>
- <h:outputText value="计算机书籍" />
- </h:panelGroup>
- </f:facet>
- </h:dataTable>
下面需要在名为showbook的托管Bean中提供一个bookList数据源,可以在他的get方法中提供数据:
- public List<BookInfo> getBookList(){
- List<BookInfo> books = new ArrayList<BookInfo>();
- books.add(new BookInfo("Core Java", "Java", "www.itzhai.com"));
- books.add(new BookInfo("Core Java", "Java", "www.itzhai.com"));
- books.add(new BookInfo("Core Java", "Java", "www.itzhai.com"));
- return books;
- }
其中的BookInfo类如下:
- public class BookInfo {
- private String name;
- private String url;
- private String bookClass;
- public BookInfo(String name, String bookClass, String url){
- this.name = name;
- this.bookClass = bookClass;
- this.url = url;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getUrl() {
- return url;
- }
- public void setUrl(String url) {
- this.url = url;
- }
- public String getBookClass() {
- return bookClass;
- }
- public void setBookClass(String bookClass) {
- this.bookClass = bookClass;
- }
- }
- <h:graphicImage value="images/01.jpg" alt="图像01" />
这个标签将生成HTML的img标签。
【转】JSF中的三大核心组件 UI标签的详细介绍和使用举例的更多相关文章
- HTML5中<template>标签的详细介绍
HTML5中<template>标签的详细介绍(图文) 这篇文章主要介绍了HTML5中的template标签,是HTML5入门中的重要知识,需要的朋友可以参考 一.HTML5 templa ...
- Swift UI控件详细介绍(上)
UI控件 首先介绍一下AppDelegate.swift@UIApplicationMain 调用了OC中的UIApplicationMain函数:UIApplicationMain是iOS应用程序的 ...
- SD卡中FAT32文件格式快速入门(图文详细介绍)【转】
本文转自:http://blog.csdn.net/mjx91282041/article/details/8904705 说明: MBR :Master Boot Record ( 主引导记录) D ...
- SD卡中FAT32文件格式快速入门(图文详细介绍)
说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表 ...
- maven中的pom配置文件标签的详细介绍
<span style="padding:0px; margin:0px"><project xmlns="http://maven.apache.or ...
- MyBatis:SQL语句中的foreach标签的详细介绍
foreach 也就是遍历迭代,在SQL中通常用在 in 这个关键词的后面 foreach元素的属性主要有 item,index,collection,open,separator,close. 分别 ...
- HTML:Input元素标签的详细介绍
总结Input的标签: Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍.1,type=text输入类型是t ...
- html meta标签用法详细介绍
meta是html语言head区的一个辅助性标签. 在页面中都有类似这样的html代码: <head> <meta http-equiv="content-Type&quo ...
- Android 项目中文件夹作用(res文件夹详细介绍)
1. src:存放所有的*.Java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可以存放项目一些较大的资源文件,例如: ...
随机推荐
- 三方面搞定http协议之“请求方法”
我所熟知的请求方法一共有六种: GET 请求指定的页面信息,并返回实体主体. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件) PUT 从客户端向服务器传送的数据取代指定的文档的内 ...
- Java 容器 & 泛型:六、容器讲到为什么要使用泛型
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket ArrayList是集合类中无处不在的,泛型也是,泛型对集合类尤其有用.但是为啥要使用泛型?理解好了这 ...
- ZOJ Problem Set - 3708 Density of Power Network
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3708 #include <stdio.h> #include ...
- tensorflow 1.12.0 gpu + python3.6.8 + win10 + GTX1060 + cuda9.0 + cudnn7.4 + vs2017)
在安装tensorflow-gpu时,也看过不少的博客,讲得乱七八糟的,也不能这样说,只是每个人安装的环境或需求不一样,因此没有找到一个适合自己的教程去安装tensorflow-gpu版本.当然,入手 ...
- Go基础系列:函数(1)
Go中函数特性简介 对Go中的函数特性做一个总结.懂则看,不懂则算. Go中有3种函数:普通函数.匿名函数(没有名称的函数).方法(定义在struct上的函数). Go编译时不在乎函数的定义位置,但建 ...
- iptables实战案例详解-技术流ken
简介 关于iptables的介绍网上有很多的资料,大家可以自己找一些关于iptables的工作原理,以及四表五链的简介,对于学习iptables将会事半功倍.本博文将会例举几个工作中常用的iptabl ...
- sql server 行转列存储过程
if object_id('[P_GetPriceTableBuy]','P') is not null drop procedure P_GetPriceTableBuy SET ANSI_NULL ...
- nginx 禁止未绑定的域名访问
nginx 禁止未绑定的域名访问 方法1: server { listen 80 default_server; #不指定 server_name, server_name 默认为"&quo ...
- vs 调试 iis中的网站
打开网站,在vs中附加进程,选择w3wp.exe,如果不能下断点,设置一下pdb文件位置
- Java高并发 -- 并发扩展
Java高并发 -- 并发扩展 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 死锁 死锁是指两个或两个以上的事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象, ...