JSF培训教程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
托管 Bean
在faces-config.xml中集中管理 作用域:
application :一直存活 session :会话过程 request :请求阶段 none :需要时,临时
Beans的配置与设定
Bean的基本定义:
名称 <managed-bean-name> 类 <managed-bean-class> 存活范围 <managed-bean-scope> 见JSF示例中Bean的配置
JSF标准标签
输出(Outputs) 其名称以output作为开头,作用为输出指定的信息或绑定值。 输入(Inputs) 其名称以input作为开头,其作用为提供使用者输入框。 命令(Commands) 其名称以command作为开头,其作用为提供命令或链接按钮。 选择(Selections) 其名称以select作为开头,其作用为提供使用者选项的选取。 其它 包括了form、message、graphicImage等等未分类的标签。
3 JSF标签
核心标签 标准标签
输出类标签 输入类标签 命令类标签 选择类标签 其他标签
JSF核心标签
view 创建顶层视图 subview 创建视图的子视图 facet 向组件添加facet param 向组件添加参数 attribute 向组件添加属性 actionListener 在父组件上注册操作监听器 valueChangeListener 向父组件注册值变更监听器 converter 注册任意转换器 convertDateTime 注册日期时间转换器 convertNumber 注册数量转换器 validateLength 验证组件值的长度 validateDoubleRange 验证组件值的双精度范围 validateLongRange 验证组件值的长整型范围 validator 向组件添加验证器 loadBundle 加载资源包 verbatim 向页面中添加标签 selectItem 指定UISelectOne或UISelectMany组件的一个项目 selectItems 指定UISelectOne或UISelectMany组件的多个项目
JSF导航-简单Navigation
首先我们修改一下UserBean中的方法:
private String name; private String password; private String errMessage; public String verify() { if(!name.equals("justin") || !password.equals("123456")) { errMessage = "名称或密码错误"; return "failure"; } else { return "success"; } }
JSF示例-UserBean.java-程序开发人员
public class UserBean { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } }
Java Server Faces (JSF) :符合JavaEE5标 准的Java Web应用框架。 JSF提供:
标准的编程接口 丰富可扩展的组件库 事件驱动模型
JSF通过IDE工具支持拖放式开发。
1.2 JSF相关介绍-JSF的目标
目标
简化开发 超越现有Web框架 试图在不同的角度上提供网页设计人员、应用 程序设计人员、组件开发人员解决方案,让不 同技术的人员可以彼此合作又不互相干扰
2 JSF入门-从示例程序中掌握
2.1 JSF 表达式语言(Expression Language) 2.2 托管 Bean(Backing Bean) 2.3 JSF导航
2.1 JSF 表达式语言(EL)
搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。 以#开始,将变量或运算式放置在 { 与 } 之间。 #{userBean.name} EL的变量名也可以程序执行过程中所声明的名称,或是JSF EL 预定义的隐含对象。 #{param.name} 对于Map类型对象,可以使用 ‘.’ 运算符指定key值来取出对 应的value,也可以使用 [ 与 ] 来指定。 #{param['name']} #{someBean.someMap[user.name]} 如果变量是List类型或阵列的话,则可以在 [] 中指定索引。 #{someBean.someList[0]}
JSF导航-简单Navigation
接下来告诉网页设计人员Bean名称与相关 属性,以及决定页面流程的verify名称,我 们修改 index.jsp 如下:
<f:view> <h:form> <h3>请输入您的名称</h3> <h:outputText value="#{user.errMessage}"/> <p> 名称: <h:inputText value="#{user.name}"/> <p> 密码: <h:inputSecret value="#{user.password}"/> <p><h:commandButton value="送出" action="#{user.verify}"/> </h:form> </f:view>
可选设置
属性的初始值 <managed-property> <managed-property> <property-name>user</property-name> <value>#{user}</value> </managed-property>
2.3 JSF导航-Navigation
2.2 托管 Bean
JSF 使用 Bean 来达到逻辑层与表现层分离 的目的,Bean 的管理集中在配置文件中, 只要修改配置文件,就可以修改 Bean 之间 的相依关系。 Backing Bean:在真正的业务逻辑Bean 及UI组件之间搭起桥梁,在Backing Bean 中会呼叫业务逻辑Bean处理使用者的请求, 或者是将业务处理结果放置其中,等待UI组 件取出当中的值并显示结果给使用者。
JSF示例-faces-config.xml-程序开发人员
<faces-config> <navigation-rule> <from-view-id>/pages/index.jsp</from-view-id> <navigation-case> <from-outcome>login</from-outcome> <to-view-id>/pages/welcome.jsp</to-view-id> </navigation-case> </navigation-rule> <managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class>net.UserBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config>
1.3 JSF示例-第一个JSF程序
现在可以开发一个简单的程序了,我们将设 计一个简单的登入程序,使用者送出名称, 之后由程序显示使用者名称及欢迎讯息。
JSF示例-index.jsp-网页设计人员
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <html> <head> <title>第一个JSF程序</title> </head> <body> <f:view> <h:form> <h3>请输入您的名称</h3> 名称: <h:inputText value="#{user.name}"/><p> <h:commandButton value=“提交" action="login"/> </h:form> </f:view> </body> </html>
JSF导航-简单Navigation
接下来我们修改一下 faces-config.xml 中 的页面流程定义:
<navigation-rule> <from-view-id>/pages/index.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/pages/welcome.jsp</to-view-id> </navigation-case> <navigation-case> <from-outcome>failure</from-outcome> <to-view-id>/pages/index.jsp</to-view-id> </navigation-case> </navigation-rule>
Java Server Faces
北京京北方科技Baidu Nhomakorabea份有限公司 2009年3月3日
主要内容
1 2 3 4 5 6 JSF简介 JSF入门 JSF标签 JSF数据验证和转换 JSF表格 JSF与Struts的区别
1 JSF简介
1.1 什么是JSF 1.2 JSF的相关介绍 1.3 JSF示例
1.1 什么是JSF
JSF示例-welcome.jsp-网页设计人员
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@page contentType="text/html;charset=Big5"%> <html> <head> <title>第一个JSF程序</title> </head> <body> <f:view> <h:outputText value=“#{user.name}”/> 您好! <h3>欢迎使用 JavaServer Faces!</h3> </f:view> </body> </html>
在示例配置文件的<navigation-rule>中, 我们定义了页面流程,当请求来自<fromview- id>中指定的页面,并且指定了 <navigation-case>中的<fromoutcome>为login时,则会将请求导向至 <to-view-id>所指定的页面。接下来我们 扩充程序,让它可以根据使用者输入的名称 与密码是否正确,决定要显示欢迎讯息或是 将使用者送回原页面进行重新登入。
标准HTML标签的属性
属性名称 id 所有组件 所有组件 所有组件 所有组件 输入、输出、命令组件 输入组件 输入、输出组件 输入组件 适用 说明 可指定id名称,以让其它标签或组件参考 绑定至UIComponent 是否显示组件 设定Cascading stylesheet(CSS) 设定值或绑定至指定的值 设定值变事件处理者 设定转换器 设定验证器
1.2 JSF相关介绍-JSF 体系结构
JSF 的主要优势之一就是它既是 Java Web 用户 界面标准又是严格遵循模型-视图-控制器 (MVC) 设计模式的框架。所有与应用程序的用户交互均由 一个前端“Faces Servlet(控制器)来处理。
1.2 JSF相关介绍-JSF的优势
UI组件(UI-component) 事件驱动模式 用户界面到业务逻辑的直接映射 程序员和网页设计人员的分工 请求处理生命周期的多阶段划分 全面的用户自定义支持 Web开发的官方标准之一