目录
摘要
本文采用具体的举例方法来说明开发组件库的过程。它说明了如何开发包含组件和转换器的简单 complib。同时,它还介绍了开发过程的主要步骤,并提供了指向包含更详细信息的来源的链接。第一次阅读本文时,您可能需要将精力集中在这些主要步骤上,以后可以查看链接以了解更详细的信息。 版本控制
通常,IDE 会设法保持组件库接口的向后兼容性。如果您为以前版本的 IDE 开发了组件库(或 complib),它们将很可能可以在 Java Studio Creator 2 中正常使用。尽管我们努力地保持向后兼容性,但此处介绍的接口以后可能会随时发生更改。 概述
在设计时,Java Studio Creator 2 IDE 使用标准 JavaBeans 组件体系结构将属性编辑器、定制器以及其他元数据与组件关联起来。JavaBean 组件或 Bean 是一种可重复使用的软件单元,它向工具公开其功能(如属性、方法和事件)。IDE 要求用户可处理的对象是 Bean。这包括 JavaServer Faces 组件(如文本字段和命令按钮)以及 JavaServer Faces 转换器和验证器。非 JavaServer Faces 组件(如数据提供器)也必须是 JavaBean 组件。IDE 使用 BeanInfo 类和 Java Studio Creator 设计时 API 来获取这些 Bean 的元数据。 设计时是指仅由工具或 IDE(如 Java Studio Creator 2)使用的应用程序部分。运行时是指始终部署到 Servlet 容器或应用服务器上的应用程序部分。在设计时,也可以在工具或 IDE 中使用某些运行时部分。 将第三方组件添加到 Java Studio Creator 上的主要步骤如下所示:
组件开发者应该反复执行这些步骤,直至获得满意的结果。 样例组件库
为了说明这些步骤,让我们看一下如何开发包含 JavaServer Faces 组件和转换器的简单 complib(您可能已通过 IDE 早期版本熟悉了 sample-date complib;这是该 complib 的更新版本)。 如果您正在编写自己的 JavaServer Faces 组件或修改现有组件以在 Java Studio Creator 2 中使用,则最好使用 DHTML 弹出式日历组件作为模板。弹出式日历组件是较复杂组件的一个很好的示例;它还说明了如何在组件库中添加资源(如 java-script 和层叠样式表 (Cascading Style Sheet, CSS) 文件)。 complib 中包含的 DHTML 弹出式日历是 IDE 附带提供的基本日历组件的定制和改进版本。DHTML 弹出式日历可以处理不同的语言环境,并且可以嵌入在某些组件中,如表组件中。图 1 和图 2 说明了该定制组件是如何扩展基本日历组件的功能的。
您可以从 Java Studio Creator 2 IDE 更新中心(通过“工具”下拉菜单可以访问更新中心)获取这些样例组件的副本,其中提供了以下两个文件:
理想情况下,IDE 应该支持任何组件。但是,这一要求通常会与用户的易用性发生冲突。由于 Java Studio Creator IDE 最初强调易用性,因此,可能推迟提供完整的通用 JavaServer Faces 支持。例如,IDE 允许用户将组件拖放到设计画布上。要支持此功能并且使其能够正常使用,组件本身必须遵循一组更严格的规则(有关详细信息,请参见“为 Java Studio Creator 编写定制组件”第 2 部分:设计时注意事项)。修改现有组件以在 IDE 中正常使用以及开发新的组件时,这些规则是非常有用的。 组件库的组成部分
创建组件库的过程涉及创建各种不同的部分,然后将这些部分包装到单个 complib 文件中。complib 可以包含以下部分:
名为 MANIFEST.MF 的 JAR 清单文件指向第二个文件(即配置 XML 文件),而后者又为组件库内容编制目录(第二个目录文件允许使用分层元素和进行国际化)。此示例包含清单文件 META-INF/MANIFEST.MF 和 XML 目录文件 complib-config.xml。IDE 读取这两个文件,但第二个文件 complib-config.xml 包含 complib 的所有相关信息,该文件实际上用作 complib 目录。IDE 可通过该 XML 文件来确定组件库中包含的项(及其类型)。
在详细介绍组件库的各个部分之前,我们先简要介绍一下组件本身。虽然所有 Java Studio Creator 组件未必是 JavaServer Faces 组件,但它们必须是 Bean(例如,数据提供器是 Bean,但不是 JavaServer Faces 组件)。 如果组件是 JavaServer Faces 组件,则它是 UIComponent 的子类。此类组件通常称为可视组件,因为它通常包含用于呈现在用户代理或用户浏览器中显示的标记的代码。对于可视组件,IDE 在设计时在可视设计器中显示呈现的标记。相反,其他类型的 Bean(包括非 JavaServer Faces 组件)称为非可视组件。
运行时 JAR 文件
运行时工件通常包装在一个或多个 JAR 文件中。样例包含 JavaServer Faces 转换器,它是非可视组件。非可视组件通常是手动实现的。可视组件通常更为复杂。编写 JavaServer Faces 可视组件的过程涉及创建几个 Java 类以及一些元数据:
虽然这可能看起来需要很大的工作量,但可视组件的大多数信息是样板,甚至可以从一组相同的元数据中派生。一种方法是保留一组元数据并提供代码生成器来派生样板类和配置文件,而不是手动将组件的不同部分保持同步。本文中介绍了这种方法。样例包含两个配置文件(faces-config.xml 和 sun-faces-config.xml),它们包含用作代码生成器输入以生成运行时和设计时工件的元数据。 代码生成器是可选的。如果您在为自己的组件运行代码生成器时出现问题,可通过检查生成器为样例组件生成的输出来确定如何手动编写您自己的代码。 设计时工件
设计时工件通常包装在设计时 JAR 文件中。这些工件包括:
可选文件
其他可选文件(如 Javadoc 和源代码文件)也可以包装在 zip 文件中。在开发过程中,IDE 可通过这些文件来提供 Javadoc 和源代码。 创建运行时 JAR
complib 包含日期选取器组件、组合的
让我们先创建一个运行时 JAR 文件,它包含日期选取器组件的 JavaServer Faces 组件。您可以手动将 可视组件需要三种运行时类:UIComponent 类本身、标记处理程序类以及呈现器。大多数 UIComponent 代码是样板,您可以自动生成这些代码。同样,标记处理程序遵循样板模式,您也可以自动生成该标记处理程序。标记处理程序中不应该包含任何特殊组件代码,因为 Java Studio Creator 2 IDE 在设计时不执行标记处理程序。在这三种类中,呈现器为组件提供其固有特性,因而通常是手动编写的。 您也可以自动生成标记库描述符 TLD 文件。 运行代码生成器
JavaServer Faces 运行时需要使用配置文件 faces-config.xml 来确定应用程序组件、转换器、验证器和呈现器的类型。但是,faces-config.xml 文件模式是可扩展的,并且 Java Studio Creator 2 可对其进行扩展以允许使用额外的元数据,这些元数据可用作代码生成器输入。通常,该扩展的元数据文件名为 sun-faces-config.xml。 由于在运行时需要使用 faces-config.xml 文件,因此,该文件中仅包含运行时所需的最低限度的元数据。所有扩展的元数据信息都保存在 sun-faces-config.xml 配置文件中。 配置文件
让我们看一下样例 faces-config.xml 文件。它包含最低限度的日期选取器组件及其呈现器相关信息。创建新的组件时,请先在该文件中添加一些条目。 接下来,查看 sun-faces-config.xml 文件。该文件包含组件的 description、tag-name、taglib-uri、base-component-type 和 instance-name 及其所有属性。每个属性包含描述和其他元数据,如显示名称、类型、JavaBeans 属性编辑器以及属性检查器中的类别。 sun-faces-config.xml 文件中的元数据用于生成以下内容:
有关使用 sun-faces-config.xml 文件作为输入来运行 Java Studio Creator 代码生成器的详细信息,请参见 ant build.xml 文件中的 gen-all 目标(build.xml 文件是可下载的样例源代码分发的一部分。您应该打开该文件以查看此目标引用)。但要切记,代码生成器接口可能会发生更改。 运行时:最终步骤
运行代码生成器后,您需要手动编写实际的呈现器和组件类。有关详细信息,请参见以下文件中的代码:
最后,收集所有运行时类、资源以及 faces-config.xml 文件并创建运行时 JAR。请参见 ant build.xml 文件中的 创建设计时 JAR
下一个主要步骤是创建设计时 JAR 文件。设计时 JAR 文件包含 BeanInfo 类和其他项,它们没有部署到容器上,而仅由某个工具使用。
ant build.xml 文件(由 如果忘记扩展 BeanInfo 基类,组件将无法正常使用,因为 JavaBeans 自省器将返回一个 BeanInfo 类,该类基于使用 Java 反射 API 检查该 Bean 时的结果。
Java Studio Creator 使用 BeanInfo 类作为与组件有关的静态元数据的唯一来源。有关详细信息,请参阅 设计时 JAR 文件也包含 DesignInfo 类。DesignInfo 类提供了有关组件的动态行为,而不是静态信息。样例 DatePickerDesignInfo.java 说明了如何在设计时(即,将新的日期选取器实例添加到页面上时)更改属性。该样例还说明了如何使用 Java Studio Creator 设计时 API 将 DateUtilConverter 链接到 DatePicker。此 API 扩展了标准 JavaBeans API,添加了一组丰富的新功能以在设计时处理组件和属性,以及为 IDE 提供了上下文菜单项、定制器以及扩展的属性编辑器。
通常放置在设计时 JAR 文件中的其他项包括属性编辑器、类别描述符以及本地化资源包。例如,在 DatePickerBeanInfo 中,DatePicker 其他 Complib 项
complib 中可以包含对 IDE 用户有用的其他可选项。这些项包括:
组装并测试 Complib 文件
组装 complib 文件是最后一步。首先,创建一个 JAR 清单文件,它包含一个指向 XML 配置文件的指针。在本示例中,complib-config.xml 包含与 complib 有关的所有元数据。 在本示例中,conf/complib-config.xml 文件包含一个指向用于国际化的 Java 属性 ResourceBundle 的指针。它在 IDE 的组件面板类别中显式地声明组件类。它还使用由 ant 复制任务替代的过滤器表达式。 最后,创建包含 JAR ant 任务的 complib 文件。有关详细信息,请参见 complib 目标。 按如下方式测试组装的组件库:
Java Studio Creator 2 使用导入的组件库并扩展包,从而将导入库中的组件添加到用户组件面板上(您可能需要打开组件面板类别才能看到新组件)。它还会将扩展的 complib 复制到当前用户目录 通过将组件添加到页面来对其进行测试。第一次将组件添加到页面上时,IDE 会将解压缩的 complib 复制到项目中,并创建对组件库的引用。您可以在“项目”窗口中的项目“库”节点下看到该引用。通过在“项目”窗口中选择项目节点的“属性”上下文菜单项,可以看到在项目中添加的库。 其他注意事项
使用组件库时,请切记这些其他注意事项。
小结
现在,您已经大致了解了创建组件库并将其用于 Java Studio Creator 2 IDE 的过程。您还了解了组成组件库的各种文件,以及对此类库中的组件执行生成、组装和测试操作的步骤。 您可以从 Java Studio Creator 2 IDE 更新中心下载本文中提到的包含源代码的样例组件。它们提供了一种非常好的方法来直接查看组件库的组成部分。 这是文章的第 1 部分(共 2 部分)。第 2 部分是“为 Java Studio Creator 编写定制组件”第 2 部分:设计时注意事项。 相关信息
您可以通过各种不同的来源以了解有关组件和组件库的详细信息。 功能简介文章 Sun Java Studio Creator 2 的 Java Studio Creator 设计时 API 简要介绍了 API。您可能还想了解 Java Studio Creator 设计时 API 规范。 JavaServer Faces 组件简介介绍了定制现有 JavaServer Faces 标准组件与生成新的定制组件之间的区别。请阅读此文章以了解您可能需要生成自己的组件的原因,以及在您决定执行此操作时应切记的注意事项。 “为 Java Studio Creator 编写定制组件”第 2 部分:设计时注意事项为您编写自己的定制组件提供了所需的详细信息。 《J2EE 1.4 教程》的创建定制 UI 组件一章为您编写自己的组件提供了详细准则。 如何编写 JavaServer Faces 组件提供了一些编写组件的基本规则。 了解有关 JavaServer Faces 组件和 JavaBeans 的详细信息。 更多的开发者资源
有关为开发者提供的教程、技术提示、文章、论坛、更新和专家建议,请访问 Sun Developer Network (SDN) 上的 Java Studio Creator 开发者资源,网址为 http://gceclub.sun.com.cn/prodtech/javatools/jscreator/。 |
| ||||||||||||||||||||||||||||||||||||||||||
|
|
|
| ||||||||||||