MyEclipse6Java开发中文教程 第十四章开发JSF应用 第十四章开发JSF应用 141前言 142介绍 143系统需求 144快速入门 144.1创建 HelloJSF项目 1442创建消息包 33467 1443创建受管Bean 1444创建JSP页面 1445添加导航规则 1446运行应用程序 292 145事件监听和导航机制 14.5.1位于 Managed Bean中的事件处理方法 1452基于导航规则的命令按钮 action 1453加入多个 ActionListener类 146JSF中的内置依赖注入 147JSF整合 Spring开发 33 1471简介 1472创建项目 jsfspring并修改Java类 147.3修改配置文件并在JSF中注入Bean 1474完全使用 Spring配置Bean 148JSF+JPA的 MyEclipse官方Bog实例 147小结 148参考资料 141前言 在第十二章的时候,我们讨论了 Struts2,也稍微提到了JsF。我们都知道Java的Web 开发日益面临着框架林立,开发工具笨拙,思路独特的限制。然而,Sun公司的工程师们希 望能把基于Swng的开发模式应用到web中去,让这些可怜的Java程序员不用了解什么 是HTML和HTTP也能工作。这很大程度上是因为微软的NETWebforr给人留下的深刻 印象,NET的程序员们不用像Java的Web程序员们那样,要学过一大堆的框架外加HTML, cSS和 JavaScript后才能工作,他们只需要用可视化的 Visual studio中的页面设计器,拖 放几个控件到页面上,设置下属性,编写以下事件处理代码,就搞定了。因此,Sun希望在 Java的世界里也能出现这样的技术和配套的IDE,因此很早的时候,就开始了JSF的研究, 而现在更是将它作为 Java ee5规范的一部分,所有要开发服务器的厂商都必须支持它 然而,好事多磨,因为Java世界的向心力总是不如微软那样强,大家各自打自己的算盘, 刘长炯著
MyEclipse 6 Java 开发中文教程 1 刘长炯著 第十四章 开发 JSF 应用 第十四章 开发JSF应用 ..................................................................................................... 1 14.1 前言................................................................................................................... 1 14.2 介绍................................................................................................................... 3 14.3 系统需求............................................................................................................ 3 14.4 快速入门............................................................................................................ 3 14.4.1 创建HelloJSF项目 ................................................................................... 4 14.4.2 创建消息包.............................................................................................. 6 14.4.3 创建受管Bean ......................................................................................... 7 14.4.4 创建JSP页面......................................................................................... 12 14.4.5 添加导航规则 ........................................................................................ 19 14.4.6 运行应用程序 ........................................................................................ 22 14.5 事件监听和导航机制......................................................................................... 23 14.5.1 位于Managed Bean中的事件处理方法.................................................. 23 14.5.2 基于导航规则的命令按钮action ............................................................. 27 14.5.3 加入多个ActionListener类 ..................................................................... 29 14.6 JSF中的内置依赖注入...................................................................................... 31 14.7 JSF整合Spring开发.......................................................................................... 33 14.7.1 简介....................................................................................................... 33 14.7.2 创建项目jsfspring并修改Java类 ............................................................ 34 14.7.3 修改配置文件并在JSF中注入Bean........................................................ 36 14.7.4 完全使用Spring配置Bean...................................................................... 40 14.8 JSF + JPA的MyEclipse 官方Blog实例............................................................. 41 14.7 小结................................................................................................................. 45 14.8 参考资料.......................................................................................................... 46 14.1 前言 在第十二章的时候,我们讨论了 Struts 2,也稍微提到了 JSF。我们都知道 Java 的 Web 开发日益面临着框架林立,开发工具笨拙,思路独特的限制。然而,Sun 公司的工程师们希 望能把基于 Swing 的开发模式应用到 Web 中去,让这些可怜的 Java 程序员不用了解什么 是 HTML 和 HTTP 也能工作。这很大程度上是因为微软的.NET WebForm 给人留下的深刻 印象,.NET的程序员们不用像Java的Web程序员们那样,要学过一大堆的框架外加HTML, CSS 和 JavaScript 后才能工作,他们只需要用可视化的 Visual Studio 中的页面设计器,拖 放几个控件到页面上,设置下属性,编写以下事件处理代码,就搞定了。因此,Sun 希望在 Java 的世界里也能出现这样的技术和配套的 IDE,因此很早的时候,就开始了 JSF 的研究, 而现在更是将它作为 Java EE 5 规范的一部分,所有要开发服务器的厂商都必须支持它。 然而,好事多磨,因为 Java 世界的向心力总是不如微软那样强,大家各自打自己的算盘
MyEclipse6Java开发中文教程 所以自从2004年3月第一个版本发布一来,很长一段时间内无人问津,更有很长时候成为 高手们批判的对象。所幸风水轮流转,经过了一阵混乱的开源热风后,程序员已经尝到了非 标准化和框架更新换代飞快,API和开发模式互不兼容的苦头,所以现在JSF又重新回到 了公众的视野,不过,现实是残酷的,因为不够成熟,它的支持率始终不是那么的高。原因 有:配置文件复杂,基于XML格式;开发工具不够智能化;组件不够丰富。然而,它毕竟 还是让人看到了统一化编程的方向,所以各大公司和开源组织不遗余力的探索和改进,目前 新的规范正在制定当中,也就是第三代Web框架:基于标注的后台模式和基于组件的前台 模式。 首先,JSF是一组规范和接口,不包含具体的实现类。就其规范内容来说,因为要涵盖 方方面面,所以里面的内容还是蛮复杂的。和Sun一贯的作风一样,它把JSF分成了两部 分:面向开发工具制造商的部分(提供JSF的底层实现,组件库,以及配套开发工具)和 面向开发人员的部分。虽然底层的实现各不相同,但是对于开发人员来说,标准的组件其用 法都是一样的,这样就允许厂商在自己的JSF实现中在保持AP不变的方式下进行性能等 的竞争。另一方面,不像其它的Web框架,JSF首次提出组件库的概念,它可以让厂商和 开发人员很容易的就对JSF进行扩展,而使用者却不需要关心底层的实现,它只需要按照 要求包含类库和标签库,就能工作了,这样也利于商业化。 在这里笔者不打算对JSF进行细致入微的介绍,我们只需要关注一下对开发人员带来 的东西就可以了。首先是概念上的转变,像Stus2一样,JSF要求开发人员不再考虑HTTP Request, Response这些东西,而把注意力转移到业务类和表示层上去。另外,第二个是 服务器端事件驱动的编程模式。例如:,点击按钮后会弹出 一个对话框,然而现在这些功能可以转移到服务器端来进行了,更重要的是页面的每一个组 件都可以这样来做,这是 Struts(包括 Struts2)里面所无法很轻松就能实现的,因为首先 您要保存页面的当前状态,然后判断点击的是哪个按钮,之后在根据这个按钮再触发对应的 处理方法,所幸的是这些功能JF都已经做好了(或者说是要求JSF的框架开发人员必须 实现这些)。读者不需要再去考虑表单提交之类的内容,它们都已经被封装好了。第三个改 变就是您可以使用可视化的设计器进行开发,就像NET的 Visual studio开发工具一样。像 读者期待的那样,可以在页面里面拖放一张数据库表格,直接对上面的数据进行编辑等等 更重要的是这些功能都是做好的,无须自己从头开始。而且,JSF目前也提供了大量支持 AJAX的组件和标签库。 在厂商的支持上,sF目前获得了大多数 Java e服务器厂商的支持,例如 Oracle BEA等等,还有国产的金蝶软件的 Apusic服务器;当然还有Sun自己的 GlassFish。开源 上,则为数众多,例如 ICEfaces, JBoss RichFaces, Apache MyFaces等等,最后,还有 国产的金蝶开源的 Apusic OperaMasks。开发工具上,则有众多的选择(大部分都是免费 的,并支持可视化的设计器),包括 Oracle JDeveloper, Bea Workshop, MyEclipse, Apusic Studio以及目前来说做的开源里面最优秀的 Netbeans IDE6。图141展示了 Netbeans中 正在进行可视化JSF开发的截屏。相比较而言, MyEclipse的JSF开发功能则相对较弱, 但是也足够我们使用的了。 2 刘长炯著
MyEclipse 6 Java 开发中文教程 2 刘长炯著 所以自从 2004 年 3 月第一个版本发布一来,很长一段时间内无人问津,更有很长时候成为 高手们批判的对象。所幸风水轮流转,经过了一阵混乱的开源热风后,程序员已经尝到了非 标准化和框架更新换代飞快,API 和开发模式互不兼容的苦头,所以现在 JSF 又重新回到 了公众的视野,不过,现实是残酷的,因为不够成熟,它的支持率始终不是那么的高。原因 有:配置文件复杂,基于 XML 格式;开发工具不够智能化;组件不够丰富。然而,它毕竟 还是让人看到了统一化编程的方向,所以各大公司和开源组织不遗余力的探索和改进,目前 新的规范正在制定当中,也就是第三代 Web 框架:基于标注的后台模式和基于组件的前台 模式。 首先,JSF 是一组规范和接口,不包含具体的实现类。就其规范内容来说,因为要涵盖 方方面面,所以里面的内容还是蛮复杂的。和 Sun 一贯的作风一样,它把 JSF 分成了两部 分:面向开发工具制造商的部分(提供 JSF 的底层实现,组件库,以及配套开发工具)和 面向开发人员的部分。虽然底层的实现各不相同,但是对于开发人员来说,标准的组件其用 法都是一样的,这样就允许厂商在自己的 JSF 实现中在保持 API 不变的方式下进行性能等 的竞争。另一方面,不像其它的 Web 框架,JSF 首次提出组件库的概念,它可以让厂商和 开发人员很容易的就对 JSF 进行扩展,而使用者却不需要关心底层的实现,它只需要按照 要求包含类库和标签库,就能工作了,这样也利于商业化。 在这里笔者不打算对 JSF 进行细致入微的介绍,我们只需要关注一下对开发人员带来 的东西就可以了。首先是概念上的转变,像 Struts 2 一样,JSF 要求开发人员不再考虑 HTTP, Request,Response 这些东西,而把注意力转移到业务类和表示层上去。另外,第二个是 服务器端事件驱动的编程模式。例如:,点击按钮后会弹出 一个对话框,然而现在这些功能可以转移到服务器端来进行了,更重要的是页面的每一个组 件都可以这样来做,这是 Struts(包括 Struts 2)里面所无法很轻松就能实现的,因为首先 您要保存页面的当前状态,然后判断点击的是哪个按钮,之后在根据这个按钮再触发对应的 处理方法,所幸的是这些功能 JSF 都已经做好了(或者说是要求 JSF 的框架开发人员必须 实现这些)。读者不需要再去考虑表单提交之类的内容,它们都已经被封装好了。第三个改 变就是您可以使用可视化的设计器进行开发,就像.NET 的 Visual Studio 开发工具一样。像 读者期待的那样,可以在页面里面拖放一张数据库表格,直接对上面的数据进行编辑等等, 更重要的是这些功能都是做好的,无须自己从头开始。而且,JSF 目前也提供了大量支持 AJAX 的组件和标签库。 在厂商的支持上,JSF 目前获得了大多数 Java EE 服务器厂商的支持,例如 Oracle, BEA 等等,还有国产的金蝶软件的 Apusic 服务器;当然还有 Sun 自己的 GlassFish。开源 上,则为数众多,例如 ICEfaces,JBoss RichFaces,Apache MyFaces 等等,最后,还有 国产的金蝶开源的 Apusic OperaMasks。开发工具上,则有众多的选择(大部分都是免费 的,并支持可视化的设计器),包括 Oracle JDeveloper,Bea Workshop,MyEclipse,Apusic Studio 以及目前来说做的开源里面最优秀的 Netbeans IDE 6。图 14.1 展示了 Netbeans 中 正在进行可视化 JSF 开发的截屏。相比较而言,MyEclipse 的 JSF 开发功能则相对较弱, 但是也足够我们使用的了
MyEclipse6Java开发中文教程 口区 文件()(E图(导抗N源(5)重构A生成(日)运行()分析P)版本控制D工只①空二(帮动 臼国号3自D鄙·① 「项目和x立件 条 Pagel *success x navig,回组佳面版 3-O WebApplicationl ab页 设计JPJ副母回任意大小 标签 +-O NETA-IITF A静态文本 4-D VEB-IIF 文本字段 。P1.jg 回文本区域 success. Jsp 按钮 中配置文件 请注册 ●超级链接 a NAITIFESINF 当 cont ext.xnl 器图像超级链接 config, xnl butt1:注册-导航 m1:注間一 用户名 style p。st1 bodyl 白日 Form 因 staticfert1:用户名 t textField 主因 a staticText2:地址 +-xtertField2 sbed口回 巴btan注册 图141可视化开发JSF的 Netbeans6 面对这么多的JSF框架,开发人员又该如何抉择呢?建议读者要学习JSF的话,尽量 选择Sun公司的JSF参考实现,这样是比较规范和标准的。然而,这些JSF框架各具特色 例如有的尤其擅长AJAX功能,读者可以自己根据实际情况进行抉择 142介绍 由于JSF框架的目前市场占有率并不是特别的高,因此在本章呢,也不打算特别深入 和全面的对其进行介绍。读者如有兴趣可以查看本章末尾的参考资料一章来获取更多信息。 我们主要来做个非常简单的登录应用,来展示基本的开发过程。读者很快就可以发现后台 类的开发和 Struts2有很相似的地方。实际上,JSF和我们以前介绍的 Struts1和 Struts2 都有很多相似的概念。当然,读者可以完全在没有接触过 Struts的情况下学习JSF 143系统需求 我们的第一个练习只需要MyEc|ipse6.0+ Tomcat就可以了,或者其它的Web服务 器也可以 后面的部分需要 My Eclipse Derby数据库。 144快速入门 本节我们将会做一个非常简易的登录示例应用 刘长炯著
MyEclipse 6 Java 开发中文教程 3 刘长炯著 图 14.1 可视化开发 JSF 的 Netbeans 6 面对这么多的 JSF 框架,开发人员又该如何抉择呢?建议读者要学习 JSF 的话,尽量 选择 Sun 公司的 JSF 参考实现,这样是比较规范和标准的。然而,这些 JSF 框架各具特色, 例如有的尤其擅长 AJAX 功能,读者可以自己根据实际情况进行抉择。 14.2 介绍 由于 JSF 框架的目前市场占有率并不是特别的高,因此在本章呢,也不打算特别深入 和全面的对其进行介绍。读者如有兴趣可以查看本章末尾的参考资料一章来获取更多信息。 我们主要来做一个非常简单的登录应用,来展示基本的开发过程。读者很快就可以发现后台 类的开发和 Struts 2 有很相似的地方。实际上,JSF 和我们以前介绍的 Struts 1 和 Struts 2 都有很多相似的概念。当然,读者可以完全在没有接触过 Struts 的情况下学习 JSF。 14.3 系统需求 我们的第一个练习只需要 MyEclipse 6.0 + Tomcat 就可以了,或者其它的 Web 服务 器也可以。 后面的部分需要 MyEclipse Derby 数据库。 14.4 快速入门 本节我们将会做一个非常简易的登录示例应用
MyEclipse6Java开发中文教程 1441创建 HelloJSF项目 我们需要在 MyEclipse中创建一个新的Web项目,并向它添加必要的Sus2类库 和配置文件。现在我们来创建一个名为 HelloS的Web项目。选择菜单File>New>Web Project,可以启动创建Web项目的向导,如图83所示。在弹出的对话框的 Project Name 中输入 HelloS,然后选中J2 EE Specification Leve下面的 Java ee50单选钮,最后 点击 Finish按钮就可以创建好这个Web项目了。 注意:因为开发JSF程序的时候流行和JSTL类库搭配,所以在项目创建时如果您选 中的是J2EE14,建议您选中复选框 Add jstl libraries to web-infdlib folder?,并选 中JSTL11单选钮。当然,您也可以在以后再来添加JSTL类库,通过选择菜单项 My Eclipse Project Capabilities Add JSTL Libraries .*EEX Web项目创建完毕后,我们需要给它添加JsF功能。这个操作可以通过在 Package Explorer视图的项目根节点上右键点击,选择弹出菜单中的 My Eclipse> Add jsF Capability:也可以通过选择菜单 MyEclipse> Proiect Capabilities Add JSF Capabilities….来启动 Add JSF Capabilities向导,如图142所示。JSF对话框的默认 值一般来说不需要修改就可以使用,不过您熟悉的话也可以通过修改对话框里面的默认值来 改变配置。图中默认的JSF实现是 Java ee50Sun公司的版本,不支持 Facelets。对话 框中的 JsF config path指定了JSF配置文件的位置,v而 Faces servlet name则指定了 JSF的核心 Servlet的名字, URL pattern制定了 JSF Servlet的默认监听的URL类型的名 字为‘ faces,这些值都可以加以修改。如果选中了复选框 Add JSF Facelets support,那 么就可以点击Next按钮进入下一页设置 Facelets Add JSF Capabilities Javaserver Faces Support for My Eclipse Web Project Enable project for JavaServer Faces development Heb-root folder JSF specification level: 1.2 (for Java EE 5.0 projects) JSF Implenentation: JS? implementati on included with JEE 5 AppServer JSF config path VYEB-INF/facer-config,xml Faces servlet name: aces Servlet URL Pattern: v Copy JSF TLDs into project View and edit libraries DAdd JSF Facelets support (Facelets is not supported for Sun JSF Reference Inplenentati on 1.1) K Back Hext> Finish Cancel 142添加JSF功能向导对话框 刘长炯著
MyEclipse 6 Java 开发中文教程 4 刘长炯著 14.4.1 创建 HelloJSF 项目 我们需要在 MyEclipse 中创建一个新的 Web 项目,并向它添加必要的 Struts 2 类库 和配置文件。现在我们来创建一个名为 HelloJSF 的 Web 项目。选择菜单 File > New > Web Project,可以启动创建 Web 项目的向导,如图 8.3 所示。在弹出的对话框的 Project Name 中输入 HelloJSF,然后选中 J2EE Specification Level 下面的 Java EE 5.0 单选钮,最后 点击 Finish 按钮就可以创建好这个 Web 项目了。 注意:因为开发 JSF 程序的时候流行和 JSTL 类库搭配,所以在项目创建时如果您选 中的是 J2EE 1.4,建议您选中复选框 Add JSTL libraries to WEB-INF/lib folder?,并选 中 JSTL1.1 单选钮。当然,您也可以在以后再来添加 JSTL 类库,通过选择菜单项 MyEclipse > Project Capabilities > Add JSTL Libraries...来完成。 Web 项目创建完毕后,我们需要给它添加 JSF 功能。这个操作可以通过在 Package Explorer 视图的项目根节点上右键点击,选择弹出菜单中的 MyEclipse > Add JSF Capabilities;也可以通过选择菜单 MyEclipse > Project Capabilities > Add JSF Capabilities ... 来启动 Add JSF Capabilities 向导,如图 14.2 所示。JSF 对话框的默认 值一般来说不需要修改就可以使用,不过您熟悉的话也可以通过修改对话框里面的默认值来 改变配置。图中默认的 JSF 实现是 Java EE 5.0 Sun 公司的版本,不支持 Facelets。对话 框中的 JSF config path 指定了 JSF 配置文件的位置,而 Faces servlet name 则指定了 JSF 的核心 Servlet 的名字,URL pattern 制定了 JSF Servlet 的默认监听的 URL 类型的名 字为*.faces,这些值都可以加以修改。如果选中了复选框 Add JSF Facelets support,那 么就可以点击 Next 按钮进入下一页设置 Facelets。 14.2 添加 JSF 功能向导对话框
MyEclipse6Java开发中文教程 3 JSF类库 当向导结束后,可以看到项目的目录结构将如图143 所示。其中的两个jar是JSF的类库,读者完全可以替换 熟 JRE System Li bray [My成其它类型的JsF实现,例如 MyFaces,而不必修改 EA Java EE 5 Libraries ava web. xm/中的 Servlet定义。 faces-con1gxm则是JSF的 jsf-impl-rDt。核心配置文件,这和Sus等其它框架是相似的,都有核 jsf-api.ja」、a3心的配置文件。 5t1-1.2.ja-D:小a在这时候,空白的 faces-config xm的内容如下: 日多 WebRoot +-C META-INF 白②WEB-IF javax. faces. CONFIG FILES Ne/fa fig xml Faces Servlet javax. faces.webapp. Faces servlet 0 Faces Servlet aces index. jsp javax. faces. CONFIG_FLES这个变量的取值指定了JSF的配置文件的位置所在,读 者可以根据自己的需要进行修改 刘长炯著
MyEclipse 6 Java 开发中文教程 5 刘长炯著 图 14.3 添加完 JSF 功能的项 目目录结构 当向导结束后,可以看到项目的目录结构将如图 14.3 所示。其中的两个 jar 是 JSF 的类库,读者完全可以替换 成其它类型的 JSF 实现,例如 MyFaces,而不必修改 web.xml 中的 Servlet 定义。faces-config.xml 则是 JSF 的 核心配置文件,这和 Struts 等其它框架是相似的,都有核 心的配置文件。 在这时候,空白的 faces-config.xml 的内容如下: 。web.xml 的代码清单如下所示: javax.faces.CONFIG_FILES /WEB-INF/faces-config.xml Faces Servlet javax.faces.webapp.FacesServlet 0 Faces Servlet *.faces index.jsp 。javax.faces.CONFIG_FILES 这个变量的取值指定了 JSF 的配置文件的位置所在,读 者可以根据自己的需要进行修改
MyEclipse6Java开发中文教程 1442创建消息包 JSF支持国际化的消息文件,因此在项目里面可以使用消息包来显示多国语言。现在让 我们来创建一个 Message Bundle文件,这是一个简单的属性文件,它将保存所有的消息字 符串以及相关的主键,然后这个消息包可以用在我们的任何JSP文件中来让我们的应用很 容易的支持国际化语言。就像过去看到的那样, Struts1和2在这个领域提供了相似的支持 通过使用 Application Resources. properties文件或者 package properties文件,以及不同 的标签,就可以在页面中根据消息包来显示国际化 的提示信息。在JSF页面里面,我们可以在JSP页面里加入一行代码来加载消息包 Fie,在文件新建对话框的 File name中 输入 Messages. properties,然后将文件内容修改为如下所示 login label=Please Login: username label=User nar 。同样的我们还需要一份中文的消息文件内容,具体制作方法可以参考1233使用国际化 消息一节的内容。这份文件名为 Messages zh CN properties,文件内容如下 login label=\u8bf7\u767b\u5f55 username label=\u7528\u6237\u540d 。这两行转码过的文字内容分别是:请登录和用户名。主键将来会用在JSF页面中显示消 息之用。 刘长炯著
MyEclipse 6 Java 开发中文教程 6 刘长炯著 14.4.2 创建消息包 JSF 支持国际化的消息文件,因此在项目里面可以使用消息包来显示多国语言。现在让 我们来创建一个 MessageBundle 文件,这是一个简单的属性文件,它将保存所有的消息字 符串以及相关的主键, 然后这个消息包可以用在我们的任何 JSP 文件中来让我们的应用很 容易的支持国际化语言。就像过去看到的那样,Struts1 和 2 在这个领域提供了相似的支持, 通过使用 ApplicationResources.properties 文件或者 package.properties 文件,以及不同 的 标签,或者标签,就可以在页面中根据消息包来显示国际化 的提示信息。在 JSF 页面里面,我们可以在 JSP 页面里加入一行代码来加载消息包: 注意:这一行代码创建了一个生命周期为页面的消息包,这个包可以稍后在页面中通过变量 名'bundle'来进行引用,可以用来查找消息主键,然后返回对应的消息值。另外,JSF 可以 完全不用消息驱动包也能进行开发,所以读者不要误会,换句话说,这一节的内容和后面的 一些内容是可选的。 要创建消息包文件,我们可以使用新建文件向导,在 Package Explorer 视图中右键点 击项目的 src 目录,在弹出的菜单中选择 New > File ,在文件新建对话框的 File name 中 输入 Messages.properties,然后将文件内容修改为如下所示: login_label=Please Login: username_label=User name: 。同样的我们还需要一份中文的消息文件内容,具体制作方法可以参考 12.3.3 使用国际化 消息一节的内容。这份文件名为 Messages_zh_CN.properties,文件内容如下: login_label=\u8bf7\u767b\u5f55: username_label=\u7528\u6237\u540d: 。这两行转码过的文字内容分别是:请登录:和用户名:。主键将来会用在 JSF 页面中显示消 息之用
MyEclipse6Java开发中文教程 Her file Create a new file resource Enter or select the parent folder HelloJSF/src 合 C. myecl Ipse 急 Webroot File name: Messages. properties I [Advanced>> Finish 图144创建国际化消息资源文件 现在我们的 MessageBundle创建完毕了,接下来我们要创建受管 Bean(Managed Bean),它将处理我们的用户登录操作。很快你就会发现 ManagedBean和 Struts2中的 Action类很相似。 1443创建受管Bean 在这一部分我们将会介绍如何创建 Managed Bean,这个Bean将会执行登录JSP页面 所提示的登录操作,以及从页面表单中提取参数,并保存用户输入的用户名和密码到Bean 的属性中(类似于 Struts2的 Action所做的那样)。出于演示的目的,我们的登录操作只是 简单的检查用户名和密码是否都为" myeclipse",然后将用户重新指引到登录成功的 userLogin Success jsp页面,如果登录失败就返回到输入密码页面。 首先使用 MyEclipse JSF Cofnig Editor打开文件 faces- config. xml,用鼠标双击此文 件即可打开。在工具箱( Palette),我们可以点击工具栏按钮创建各种元素,包括创建和管 理应用程序流程(即导航规则 Navigation Case)。而在画布上点击右键,则可以看到快捷 菜单,包括 Undo Text Change撤销文本修改 Redo Text Change重做文本修改 Add NavigationRule添加导航规则 Export Image导出为图片 。点击底部的标签 Design/Source则可以在设计视图和源代码视图(源代码是XML格式 的)之间切换 刘长炯著
MyEclipse 6 Java 开发中文教程 7 刘长炯著 图 14.4 创建国际化消息资源文件 现在我们的 MessageBundle 创建完毕了,接下来我们要创建受管 Bean(ManagedBean),它将处理我们的用户登录操作。很快你就会发现 ManagedBean 和 Struts 2 中的 Action 类很相似。 14.4.3 创建受管 Bean 在这一部分我们将会介绍如何创建 ManagedBean,这个 Bean 将会执行登录 JSP 页面 所提示的登录操作,以及从页面表单中提取参数,并保存用户输入的用户名和密码到 Bean 的属性中(类似于 Struts 2 的 Action 所做的那样)。出于演示的目的,我们的登录操作只是 简单的检查用户名和密码是否都为 "myeclipse",然后将用户重新指引到登录成功的 userLoginSuccess.jsp 页面,如果登录失败就返回到输入密码页面。 首先使用 MyEclipse JSF Cofnig Editor 打开文件 faces-config.xml,用鼠标双击此文 件即可打开。在工具箱(Palette)上,我们可以点击工具栏按钮创建各种元素,包括创建和管 理应用程序流程(即导航规则 Navigation Case)。而在画布上点击右键,则可以看到快捷 菜单,包括: Undo Text Change 撤销文本修改 Redo Text Change 重做文本修改 Add NavigationRule 添加导航规则 Export Image 导出为图片 。点击底部的标签 Design/Source 则可以在设计视图和源代码视图(源代码是 XML 格式 的)之间切换
MyEclipse6Java开发中文教程 f nig. d Palett Select 恢复为选择状态 拖拉选中 M Navi gati 导航规则 ‖导航节点 Navi gati or Y Undo Text Change Ctrl+z S Redo T JSP 切换设计和源码 Add Navi gati onRu Design Source Export Image 图14.5JSF配置文件编辑器及其快捷菜单 除此之外,此时的大纲视图可以显示当前文件的内容结构,还可以创建几乎所有的JSF 元素,点中大纲上的节点的话也会选中对应设计面板上的元素或者是定位到对应的XML源 代码。从 Outline视图上,你可以右键点击选择对应的快捷菜单,然后来激活向导创建对应 类型的组件,或者来使用向导编辑存在的组件,如图146左侧图所示:另一种方式就是点 击 Outline视图的按钮则弹出相关的创建JSF组件的菜单,点击对应的菜单项就可以启动 相应的对话框来创建所需要的元素,如图146右侧图所示 军L v Show Attributes JSF Outline with Catgories XHL Outline J Add Api A Add Factory 可 Add Convert +c Managed Beans 日 avi gation Rules Ky Add Navi gati onRule +.ky /userLogin. jsp *Add ReferencedBean Edit d 2 Add Renderkit Add Lifecycle x卫 elete M Add Validator 图146 Outline视图以及启动创建 ManagedBean向导 当我们按照图146中右图步骤操作时,即可启动新建 Managed Bean向导对话框,此 刘长炯著
MyEclipse 6 Java 开发中文教程 8 刘长炯著 图 14.5 JSF 配置文件编辑器及其快捷菜单 除此之外,此时的大纲视图可以显示当前文件的内容结构,还可以创建几乎所有的 JSF 元素,点中大纲上的节点的话也会选中对应设计面板上的元素或者是定位到对应的 XML 源 代码。从 Outline 视图上,你可以右键点击选择对应的快捷菜单,然后来激活向导创建对应 类型的组件,或者来使用向导编辑存在的组件,如图 14.6 左侧图所示;另一种方式就是点 击 Outline 视图的 按钮则弹出相关的创建 JSF 组件的菜单,点击对应的菜单项就可以启动 相应的对话框来创建所需要的元素,如图 14.6 右侧图所示。 图 14.6 Outline 视图以及启动创建 ManagedBean 向导 当我们按照图 14.6 中右图步骤操作时,即可启动新建 Managed Bean 向导对话框,此
MyEclipse6Jaa开发中文教程 对话框如图14.7所示。我们按照图中进行设置即可。Name处输入 UserBean。 Class输入 com. jsfdemo. UserBean。 Scope设置这个Bean的作用域,取值包括 request, session, application和none(无),这里选中 sess/olη。对话框的最下方则需要选中复选框 Generate Java code(生成Java代码)和 Generate missiong getters/ setters for properties(生成缺 少的属性所对应的 getter和 setter方法),这样我们才能在中间的 Properties标签下的属性 列表中添加,删除和修改Bean的属性,最后还能生成对应的代码。 T⊥zard New Managed Bean reate new managed bean entry 输入Bean名称,类名,以 及作用域要 sessIon Name:UserBean Class: com. jsfdemo UserB Scope:session Properties Description Name Class value Add password java. lang String Edi 添加,修改和删除Bean属性 Add class propertie v Generate Java code v Generate missing getters/setters for properties 一程所芬 和set方 ⑦点击下一步 Hext> Finish Cancel 图147设置新 ManagedBean的类和属性 点击Add按钮后将会弹出添加属性的对话框,一共有两页,如图148所示。第一页可以 设置Name(属性名), Property Kind(属性种类,支持简单类型,以及Map和列表),以 及 Class(属性的完整类名,包括int, java. lang String等等,注意不是任意类型都可以 般来说只能用简单的类型,或者有转换器— Converter的类型,限于篇幅就不多做介绍了), Description可以输入类型的描述信息。第二页的 Property Value则说明了JSF具有简单 的属性值注入能力了,可以设置初始化时候的取值,默认情况下是nul。点击 Finish按钮关 闭对话框即可完成属性的添加。 在第一页设置完毕后,我们还必须点击图147中的Next按钮进行第二页的设置,这 一页相对非常简单,就是设置最终代码所生成的位置,默认情况下点击 Finish按钮就可以 了,读者也可以根据情况进行一些必要的调整。现在,整个向导结束了,稍等片刻后,即会 创建我们需要的 Javabean以及会自动修改相关的配置文件。 刘长炯著
MyEclipse 6 Java 开发中文教程 9 刘长炯著 对话框如图 14.7 所示。我们按照图中进行设置即可。Name 处输入 UserBean。Class 输入 com.jsfdemo.UserBean。Scope 设置这个 Bean 的作用域,取值包括 request,session, application 和 none(无),这里选中 session。对话框的最下方则需要选中复选框 Generate Java code(生成 Java 代码)和 Generate missiong getters/setters for properties(生成缺 少的属性所对应的 getter 和 setter 方法),这样我们才能在中间的 Properties 标签下的属性 列表中添加,删除和修改 Bean 的属性,最后还能生成对应的代码。 图 14.7 设置新 ManagedBean 的类和属性 点击 Add...按钮后将会弹出添加属性的对话框,一共有两页,如图 14.8 所示。第一页可以 设置 Name(属性名),Property Kind(属性种类,支持简单类型,以及 Map 和列表),以 及 Class(属性的完整类名,包括 int,java.lang.String 等等,注意不是任意类型都可以的, 一般来说只能用简单的类型,或者有转换器—Converter的类型,限于篇幅就不多做介绍了), Description 可以输入类型的描述信息。第二页的 Property Value 则说明了 JSF 具有简单 的属性值注入能力了,可以设置初始化时候的取值,默认情况下是 null。点击 Finish 按钮关 闭对话框即可完成属性的添加。 在第一页设置完毕后,我们还必须点击图 14.7 中的 Next 按钮进行第二页的设置,这 一页相对非常简单,就是设置最终代码所生成的位置,默认情况下点击 Finish 按钮就可以 了,读者也可以根据情况进行一些必要的调整。现在,整个向导结束了,稍等片刻后,即会 创建我们需要的 JavaBean 以及会自动修改相关的配置文件
MyEclipse6Java开发中文教程 Managed Bean Property izard New managed-bean-property Create managed-bean" property element age Property Kind: Simple O Map LIst Cla description:年龄属性 K Back Next>C Finish 悉夏 anaged Bean Property Vizard回区 New Managed Bean Property Value Set the value of the managed be property roperty value:201 □ NULLvalue ⑦〈tCn 图148添加属性的对话框 D=- Ou 日② Managed Beans ⊙ ⑥ password c Navi gation Rules 图149大纲视图中的 UserBean 现在我们可以看到 UserBean出现在JSF配置文件编辑器的大纲视图中,同时呢,新建的 UserBean java源文件也在Java编辑器中打开了,其源代码清单如下所示: package com. jsfdemo; 刘长炯著
MyEclipse 6 Java 开发中文教程 10 刘长炯著 图 14.8 添加属性的对话框 图 14.9 大纲视图中的 UserBean 现在我们可以看到 UserBean 出现在 JSF 配置文件编辑器的大纲视图中,同时呢,新建的 UserBean.java 源文件也在 Java 编辑器中打开了,其源代码清单如下所示: package com.jsfdemo;