1、JSF学习笔记JavaServer Faces技术是一个基于Java技术的网页应用的服务端用户界面组件框架。JavaServer Faces技术主要有以下组成: 一个描绘UI组件、管理他们的状态,处理事件、服务端验证和数据转换,定义网页导航,国际化支持与可接入,以及为这些特性提供可扩展性的API。 两个JSP公共标签库用于在一个JSP页面上表达UI组件和将组件写入服务端对象。正如上图中显示,用JavaServer Faces技术创建的用户界面(图中的myUI)在服务端运行然后返回给客户端。JSP页面,myform.jsp是一个包括了JavaServer Faces标签的JavaServer F
2、aces页面。它表示出了用以JavaServer Faces技术定义的公共标签的用户界面组件。对于网页应用的UI(在图中为myUI)管理JSP页面引用的对象。这些对象包括: 映射到JSP页面上的标签UI组件对象 在组件上注册的事件监听器,验证器,转换器。 封装组件的数据和特定应用功能的JavaBean组件什么是JavaServer Faces应用?大多数情况下,一个JavaServer Faces应用就像其他的Java Web应用一样。一个典型的JavaServer Faces应用包括下面的块: 一组JSP页面(尽管不被限制用JSP页面作为显示技术)。 一组backing beans,它们是为
3、一个页面上的UI组件定义属性以及功能的JavaBean组件。 一个应用管理资源文件,它定义页面导航规则以及配置beans和其他例如一个公共组件的公共对象。 一个部署描述符(一个web.xml文件)。 可能有一组由应用开发者创建的公共对象。这些对象可能包括公共组件,验证器,转换器或者监听器。 一组用于在一个页面上显示公共对象的公共标签。一个简单的JavaServer Faces应用中的开发角色: 页面作者,用JavaServer Faces标签库创建页面。 应用开发人员,编写公共转换器,验证器,监听器和backing beans。 组件作者,创建公共UI组件和体现程序。 应用架构师,管理应用,包
4、括定义导航规则,配置公共对象以及创建部署描述符。开发过程步骤: 映射FacesServlet实例。 用UI组件和核心标签创建页面。 在应用配置资源文件中定义页面导航。 开发backing beans。 向应用配置资源文件增加管理bean的声明。第一个JSF应用:打开MyEclipse,创建一个Web Project,项目名称命名为guessNumber,点击Finish创建结束。在项目名称上右击弹出菜单中,选择MyEclipse-Add JSF Capabilities,在Add JSF Capabilities对话框中,点击Finish。在WebRoot,创建greeting.jsp和res
5、ponse.jsp,greeting.jsp内容如下: Hello Hi. My name is Duke. Im thinking of a number from to . Can you guess it? Response.jsp内容如下: Guess The Number 修改index.jsp内容如下: 在WebRoot下的WEB-INF文件夹下,打开faces-config.xml。修改内容如下: guessNumber.ApplicationMessages ErrMsg en de fr es The decision rule used by the NavigationH
6、andler to determine which view must be displayed after the current view, greeting.jsp is processed. /greeting.jsp Indicates to the NavigationHandler that the response.jsp view must be displayed if the Action referenced by a UICommand component on the greeting.jsp view returns the outcome success. su
7、ccess /response.jsp The decision rules used by the NavigationHandler to determine which view must be displayed after the current view, response.jsp is processed. /response.jsp Indicates to the NavigationHandler that the greeting.jsp view must be displayed if the Action referenced by a UICommand comp
8、onent on the response.jsp view returns the outcome success. success /greeting.jsp The backing bean that backs up the guessNumber Web application UserNumberBean guessNumber.UserNumberBean session minimum long 0 maximum long 10 在src文件夹中,创建包guessNumber,在包guessNumber中,创建类UserNumberBean。内容如下:package gues
9、sNumber;import ponent.UIComponent;import javax.faces.context.FacesContext;import javax.faces.validator.LongRangeValidator;import javax.faces.validator.Validator;import javax.faces.validator.ValidatorException;import java.util.Random;public class UserNumberBean Integer randomInt = null; Integer userN
10、umber = null; String response = null; private boolean maximumSet = false; private boolean minimumSet = false; private long maximum = 0; private long minimum = 0; public UserNumberBean() Random randomGR = new Random(); randomInt = new Integer(randomGR.nextInt(10); System.out.println(Dukes number: + r
11、andomInt); public void setUserNumber(Integer user_number) userNumber = user_number; public Integer getUserNumber() return userNumber; public String getResponse() if (userNumber != null) & (userNpareTo(randomInt) = 0) return Yay! You got it!; else return Sorry, + userNumber + is incorrect.; public lo
12、ng getMaximum() return (this.maximum); public void setMaximum(long maximum) this.maximum = maximum; this.maximumSet = true; public long getMinimum() return (this.minimum); public void setMinimum(long minimum) this.minimum = minimum; this.minimumSet = true; 在包guessNumber中,创建文件“ApplicationMessages.pro
13、perties”,内容如下:userNoConvert=The value you entered is not a number.至此,第一个JSF应用就创建结束。下面来测试是否成功。在项目上右击弹出菜单中选择Run As-MyEclipse Server Application,选择JBoss 5.X应用服务器,点击OK。然后在浏览器中键入http:/localhost:8080/guessNumber,运行成功则说明部署正确了。配置Web应用程序的web.xml,使用JSF时,所有的请求都透过Faces Servlet来处理,您可以如下定义:web.xml JSF Demo JSF De
14、mo Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.faces index.html 在上面的定义中,我们将所有.faces的请求交由FaceServlet来处理,FaceServlet会唤起相对的.jsp网页,例如请求是/index.faces的话,则实际上会唤起/index.jsp网页,完成以上的配置,您就可以开始使用JSF了。JSF EL(Expression Language)的变量名也可以程序执行过程中所宣告的名称,或是JSF EL预设的隐含对象,例如下面的程序使用param隐含对象来取得使用者输入的参
15、数: 您好, param是JSF EL预设的隐含对象变量,它代表request所有参数的集合,实际是一个java.util.Map型态对象,JSF所提供的隐含对象,大致上对应于JSP隐含物件,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于 javax.faces.context.FacesContext与ponent.UIViewRoot。在JSF頁面上要取得Bean的屬性,是使用 JSF表示語言 (Expression Language),要注意到的是,JSF表示語言是寫成 #expression,而 JSP表示語言 是寫成 $expression,因為表示層可能是使用JSP,所以必須特別區分,另外要注意的是,JSF的標籤上之屬性設定時,只接受JSF表示語言。Beans 上的 List, Map如果您的Bean上有接受List或Map型态的属性,则您也可以在组态档案中直接设定这些属性的值,一个例子如下:. someBean onlyfun.caterpillar.SomeBean session someProperty java.lang.Integer 1 2 3 .这是一个设定接受List型态的属性,我们使用卷标指定将设定一个List对象,其中
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1