在 IBM Rational Application Developer V7.5 中的 JavaServer Faces 工具有什么新特性?

这篇文章重点强调了 IBM® Rational® Application Developer V7.5 中 JavaServerFaces 所支持的最新的几个特性。

Yury Kats, 高级软件工程师, EMC

Yury Kats 是 IBM Rational Application Developer 团队的一名开发人员,主要负责 JSF 实施、组件和工具化。



2008 年 10 月 09 日

支持 JavaServer Faces (JSF) 技术多年来已经是 IBM Rational Application Developer 最基础的特性之一。作为一个集成的开发环境 (IDE),Rational Application Developer 在通过它的使用特性和 JSF 组件的广泛设置创建 JSF 应用软件方面为 Web 开发人员提供了大量的支持。

Rational Application Developer 的新版本,7.5 版本,通过添加新特性继续延续以前的惯例,使 JSF 开发比以前更简单更快速。这篇文章重点强调了最重要以及最值得注意的新特性。

通用 JSF 组件库

毫无争议,这是对 Rational Application Developer JSF 特性集最重要以及最合适的添加。 尽管 Rational Application Developer 提供了由 IBM 开发的 JSF 组件的大量组件库,许多开发 人员也表达了他们希望能够使用其它组件库的想法,比如 MyFaces Tomahawk,Trinidad 或者JBoss RichFaces。

尽管通常情况下可以在 Web 应用软件中使用任何组件库,但是对于在源模式中手工编辑 JavaServer Pages (JSP) 和 XML 文档的经验还是非常有限。使 Rational ApplicationDeveloper 意识到第三方 JSF 组件库是十分困难的,因此这些组件应该显示在工具板中,呈现在 Design 视图中,并且由 Properties 和 Quick Edit 视图支持,这样整个就会变成集成开发环境的一部分 ,与 IBM 自己的 JSF 组件差不多。

除此之外,利用 V7.5,开发人员可以提供关于一般组件库的元数据,并且通过对它的使用可以意思到这样的组件库可以使它们成为组件库的一部分。这个元数据可以通过一个向导并简单地指向一个组件库 Java archive (JAR) 文件就可以创建,然后您就可以利用一个特殊的编辑器进行编辑,并将它与其它开发人员一起共享。

您可以通过创建一个新的 Faces 库定义 并指向包含这个库的 JAR 文件(可能在您的文件系统的任何地方或者在当前工作环境中)。

例如,要使 Rational Application Developer 支持一个 MyFaces Tomahawk 库,您需要从 MyFaces 网站下载这个 Tomahawk JAR 文件,然后利用它来创建一个库定义,操作如下:选择 File > New >Other > Faces library definition,从而弹出向导对话框,并使它指向 Tomahawk JAR (请看图 1)。

图 1. 创建一个 JavaServer Faces 库定义
创建一个 JavaServer Faces 库

当您在这个向导中点击 Finish 时,Rational Application Developer 将分析这个 JAR 从而找出 JSF 组件所包含的内容,这些组件有哪些属性,以及任何来自 JAR 文件关于这个库的其它信息。所有这些数据将存储在一个 JSF 库定义 (JLD) 文件中 ,并且这个文件在这个编辑器中被打开,这样您就可以对您的链接(请看图 2)进行调节和自定义。当然,您不必立即对所有的变更进行操作,因为可以经常打开并编辑这个 JLD 文件,提供关于这个库的额外信息。

图 2. 库定义编辑器
库

您还可以向 Rational Application Developer 提供大量关于这个库的信息。这里只有您所控制的一小部分:

  • 工具板。 工具板上将出现什么组件以及它们是如何显示的,以及所包含的顺序、图片和标签。当这个库定义最初从一个 JAR 文件中创建出来时,JAR中所有的组件都将会显示在这个工具板中。
  • 组件属性。 每个属性的类型都要详细说明,这样当您编辑一个属性值的时候,Rational Application Developer 就会知道对于特定的属性什么是正确的值以及助手对话框将为您提供什么帮助。当这个库定义最初从一个 JAR 文件中创建时,许多标准的 JSF 属性(比如 ID, 值, 译文)将会自动且适当地被确定类型。
  • 组件显示在 Design 视图中。 Rational Application Developer 中的Page Designer 将通过调用这个组件的译文,自动在 Design 视图中显示任意JSF 组件。尽管它可以显示简单的组件,比如 inputText,但是对于更高级的组件它可能不能显示,因为显示它们的代码非常复杂而且要取决于在设计时 所不能利用的组件(比如 JavaScript 库或者数据连接)。对于这样的组件,您可以提 供 HTML 片断当作设计时的显示,而不是运行这个显示属性。
  • 资源。 许多 JSF 组件需要额外的资源添加到页面或者应用软件中。这些资源主要包括 JavaScript 和 CSS 文件,更新到应用软件的 Web.xml 和 faces-config.xml 文件,或者在运行过程中这个组件库需要一些额外的 JAR。

当一个库定义被创建并保存到某个工作空间之后,Rational Application Developer 就会开始识别到新的组件库,并且这些新的组件在 IBM 组件可使用的 IDE 中都可以使用:调色板(请看图 4),Properties 视图,Quick Edit 视图,数据捆绑。

图 3. 工具板视图中的组件库
组件库
图 4. 设计时可视化
可视化

自定义 JSF 组件

当今能够使用所有不同类型的 JSF 组件库时间非常令人高兴的事,不是吗?但是如果它们都不包含您所需要的组件该怎么办呢?那就创建您自己的组件吧!太复杂了?用 Rational Application Developer V7.5 一点也不难。这个新版本可以帮助您很容易地从现存的组件中创建您自己的 JSF 组件,不论您是否想要新的组件,还是您已经反复使用大量简单的组件(例如,输入一个人的信息)。

在 Rational Application Developer 中创建一个新的 JSF 组件与开发一个常规 Web 页面十分相似。事实上,一个 Faces Componet Library 项目仅仅是Web 项目的一个调味剂,创建一个自定义组件就像开发一个常规的 JSP。您拥有大量可利用的熟悉的工具。您可以从这个工具板中拖出这些现存的 JSF 组件,利用 Page Data 视图将它们与数据捆绑在一起,并通过 Properties 视图调节它们的行为,通过 Quick Edit 视图为这些事件编写脚本。

无论您什么时候自定义您的组件变更,Rational Application Developer 都将注意到这个变化并自动产生 Java 文件,这些文件会继续使用 JSF 组件(例如,组件和标签类)和 XML 文件,从而保持组件和库的构造(faces-config.xml 和 TLD)。然后,所有产生的构件都将被打包进入一个单独的 JAR,它将与其它开发人员一起共享并应用在任何 Faces Web 应用软件中。

您通过选择 File > New > Project > Faces Component Library Project 菜单开始创建一个 Component Library。显示的(图 5)这个向导与 您创建 Web 项目所熟悉的向导是一样的,希望它能利用一个特定的配置。

图 5. 新 Faces Component Library 向导
新的 Faces Component

一个 Component Library 包含 JSF 组件(您想要多少就有多少)。您创建一个新组件的方法与创建一个新 Web 页面的方法非常类似。只需选择 New >Faces Custom Component (图 6)。

图 6. 创建一个新 Faces 组件
创建一个新组件

当这个组件创建完成之后,您可以配置它的属性,比如名称,类型,以及属性列表,然后从这个工具板中配置现存的 JSF 组件。

例如,如果您注意到通常有一个输入区域是用来输入人物名称和年龄的,您可以创建一个叫做“Person”的新组件,这样您就不需要在多个页面一次次地重复复制相同的标签,只需要使用一个标签就可以了。比如一个组件可能有3个具体的属性(姓,名,以及生日)和3个输入域,分布在一个格子里。

图 7显示了组件源的外观,它是如何显示在 Design 视图中的,以及它的属性是如何在 Properties 是图中被利用的。注意所有常见的和熟悉的 JSF 标签都被用来创建这个新组件。

图 7. 新定义的“Person”组件
新定义的组件

当您完成并保存了这个包含有组件的页面之后,Rational Application Developer 将生成 Java 和 XML 文件,并将它们打包进一个 JAR 文件中。它还将在相同的库项目中创建一个简单的测试页面。这样您就可以轻松地测试运行过程中您组件的表现和运行的行为。

您和其他开发人员都可以利用 Rational Application Developer 中合成的 ComponentLibrary,如先前部分中所描述的那样,Generic JSF 组件库。图 8显示了这个工具板上的添加到 JSP 源的新组件,在 Design 视图中可以看到,并且在 Properties 视图中有所有可利用的属性。留意图 7所显示的,应用在源代码中的 JSF 标签是如何变成一个 <fc:person> 标签的。

图 8.在应用软件中使用的新Person
使用新组件

生成模板

Rational Application Developer V7.5 中另一个巨大的改良是,当数据对象添加到一个页面时可以轻松地自定义将会产生什么样的 JSF 标签。无论什么时候您要想从这个工具板,Page Data 视图,或者其它源中删除一个数据对象,Rational Application Developer 都会对这个对象的数据类型进行分析 ,并向您提供一个为特定对象生成的 JSF 控件列表。

例如,如果您想拖一个字节数组到这个页面,Rational Application Developer会询问您是否想要这个数组与一个 Image, Link, 或者 File Upload (请看图 9)一起使用。当您做出决定之后,几个 JSF 标签都会被根据您在这个向导中的选择添加到这个页面。

图 9. 添加一个字节数组对象
一个数组对象

Rational Application Developer 通常很擅长猜测什么类型的 JSF 控制会有意义以及使 JSP 强大并为它产生有效的代码。但是如果您对 Rational Application Developer 所提供的或者标签所产生的选择不感兴趣,该如何呢? 如果您只对一个 新 Component Library (请看前面的部分)添加了支持,而现在又想在您将数据拖到 这个页面时让 Rational Application Developer 来使用这些新组件,该怎么办呢? 这就是新生成模板 要叙述的内容。

过去,数据拖动的代码生成是基于模板的;然而,这些模板都十分复杂,很难理解,并且不易更改。它们在 Rational Application Developer UI 中是完全不能使用的。而在新的版本中,情况就不一样了。生成 JSF 代码的所有模板现在在 Preferences 都可以使用,并且可以使用简化的 JSP-like 句法。切换到 Window> Preferences 菜单并选择 Web > JavaServer Faces Tools > Generation Templates ,查看可使用模板的列表(请看图 10)。

图 10. 生成模板
生成模板

这里有三种类型的模板:

  • 简单数据类型 Data ,比如字符串, Boolean, 整数,日期等等
  • 集合类型的 Iterative ,比如数组和列表
  • Java 方法的 Method

每个模板都与一个 Java 类型相连接,有一个向导(图 9)中所显示的名称,可以用在输入或者输出模式中,通过提供在模板中使用时产生的标签,在类似于 JSP 的语句中对它进行了具体的描述,并且有自定义标签属性的变量。

迭代模板与集合类型相连接,比如数组和列表(请看图 11)说明了封皮标签(例如,一个 <dataTable>) 和迭代标签(例如,一个 <column>)。

图 11. Iterative 模板
Iterative 模板样本

Rational Application Developer 包括大量的生成模板,有非常标准的Java 类型并可以使用标准和 IBM JSF 组件。您现在可以利用 Preferences UI 轻松地编辑或者创建您自己的模板。您还可以到处和导入模板,使它们在开发人员之间共享。

最后,也尤其重要的是,生成模板还可以被指定为库定义的一部分(请看前面的部分)。像前面描述的那样,如果您为新组件库提供了元数据,那么您还可以创建这个库中所使用的新组件。例如,如果您郑为 MyFaces Tomahawk 创建一个库定义,那么您还可以为 java.util.Date Java 类型创建模板,并权衡 Tomahawk 的<t:inputDate> 这些组件。


设计时验证

设计时验证是在没有部署到服务器和调试过程的情况下,查找您的 Web 应用软件中的故障和潜在问题的非常强大的一个工具。Rational Application Developer V7.5 大大扩展了 JSF 的验证能力,跟先前的版本形成鲜明的对比。它现在可以使 JSF 表达式生效, 核查数据类型,将 JSF 标签与 JSF 配置文件连接起来,等等。

图 12 显示了 Rational Application Developer 在 JSF 页面中向您警告的几个例子:

  • 第一个 <commandButton> 标签使用了一个 “成功”的导航结果,但是在 faces-config.xml 文件中却没有相应的导航规则。
  • 第二个 <commandButton> 使用了一个程序节的方式作为它的行为,但是“配置”管理程序节并没有一种叫做“结果”的方式。
  • <inputText> 一定是一个 java.util.Date 对象,但并不使用转换器。

一旦这个应用软件部署到服务器上,所有这三种问题在运行过程中都将导致一个严重的问题。幸亏有这个验证警告,您可以尽早获取这样的问题并修复它们。

图 12. 新验证特性
验证特性
图 13. 验证参数
新 JSF 验证参数

这个新的 JSF 验证功能不仅强大;而且通过 Preferences 制表在 UI (图 13)中也可以轻松地进行自定义。您可以通过在 Preferences 中选择 Web >JavaServer Faces Tools > Validation 来查找大量的验证设置。

然而,值得注意的是,Rational Application Developer 可能会对非常完美的表达式发出警告。如果发出警告,您要么忽略这个警告要么调节您的验证参数,从而使 Rational Application Developer 忽略一个特殊的验证规则。


这篇文章在最后强调的两个特性是喜欢直接利用 JSP 源代码,而不使用页面的可视图的开发人员特别重视的。Rational Application Developer V7.5 对 JSF 源编辑进行了两项主要的改良:Content Assist 和超链接。

Content Assist 将对任何 Java 或者 JSP 开发人员都十分熟悉。这里描述了它是怎样工作的:无论什么时候您想 Rational Application Developer 对您键入的代码进行建议,您只需要按下 Ctrl+Space 组合键并选择一个 Java 方式名称,JSP 标签,或者您当前环境中任何其它应用软件,而不需要您自己记住和键入所有的代码。

当在 Rational Application Developer V7.5 中使用 JSPs 时,Content Assist 就会“了解”您的 JSF 环境,并建议管理程序节名称(请看图 14),属性,以及方式,还有属性值(请看图 15)。

图 14. JSF 表达式的 ContentAssist
一个 JSF 表达式
图 15. Content Assist 响应一个 JSF 属性
响应一个 JSF 属性

另一个您可能熟悉的源代码编辑助手是 Rational Application Developer 或者Eclipse 的超链接。当您在代码片断上移动鼠标时,同时按下键盘上的 Ctrl键,这个代码片断就会变成超链接。当您点击这个链接时,您就会来到被点击片断所定义的项目区域。许多 Java 开发人员利用这个技术在 Java 类模式之间导航。

在这个版本中,您可以利用同样强大的时间节省器来导航器在 JSF 构件之间进行导航。Rational Application Developer 编辑了解您所处的 JSF 背景,并且只需要点击一下您的鼠标就可以将您直接从一个 JSP 带到一个 Java 类,或者从一个faces-config.xml 文件带到 JSP。

图 16显示了在 JSF 应用软件中使用超链接的两个例子。

图 16. 超链接
在 JSF 应用软件中使用超链接

当您在 JSP 源代码的受管 Bean 的名字上使用 Ctrl+click 时,您就可以链接到受管 Bean 的定义文件 faces-config.xml 上。当您在 bean 的方法 (doAction) 上使用 Ctrl+click 时,您就可以导航到在 Java 编辑器中类源文件的这个方法的位置。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=345145
ArticleTitle=在 IBM Rational Application Developer V7.5 中的 JavaServer Faces 工具有什么新特性?
publish-date=10092008