目录
在阅读本文之前,您可能需要查看其姊妹篇“为 Java Studio Creator 编写定制组件”第 1 部分:开发组件库。 组件的设计时注意事项
在设计时,Java Studio Creator 2 IDE 使用标准 JavaBeans(tm) 组件体系结构将属性编辑器、定制器以及其他元数据与组件关联起来。JavaBean 组件或 Bean 是一种可重复使用的软件单元,它向工具公开其功能(其属性、方法和事件)。IDE 要求用户可处理的对象是 Bean。这包括 JavaServer Faces 组件(如文本字段和命令按钮)以及 JavaServer Faces 转换器和验证器。这也适用于非 JavaServer Faces 组件(如数据提供器),这些组件派生 DataProvider 类的子类。IDE 使用 BeanInfo 类和 Java Studio Creator 设计时 API 来获取这些 Bean 的元数据。 Java Studio Creator 组件未必是 JavaServer Faces 组件,但它们必须都是 JavaBeans 组件。例如,数据提供器是 Bean,但它们不是 JavaServer Faces 组件。JavaServer Faces 组件是 UIComponent 的子类,通常将其称为可视组件,因为它通常包含用于呈现在用户代理中显示的标记的代码。对于可视组件,IDE 在设计时在可视设计器中显示呈现的标记。其他类型的 Bean 称为非可视组件,它们不包含用于呈现标记的代码。 非可视组件的开发过程相对简单一些。例如,像所有 Bean 一样,它们需要具有包含存取方法的具体类型化属性。IDE 在设计时使用 BeanInfo 类来获取组件的相关信息(如其基实例名称),随后在项目中实例化和永久保存 Bean 时使用该信息。Java Studio Creator 设计时 API 文档提供了有关 BeanInfo 常量的详细信息。 JavaServer Faces 可视组件更为复杂,本文将重点介绍这些组件。像所有 Bean 一样,可视组件的基本要求与非可视组件相同;开发这些组件时,开发者还需要遵循一些额外的准则。尤其是,在为可视组件编写运行时代码时,还应该记住组件代码的某些部分将在运行时在 IDE 中运行。 可视组件通常包括三个部分:组件类、呈现器和标记处理程序。此外,它还包括标记库描述符文件,该文件通常使用 .tld 扩展名进行标识。IDE 当前忽略标记库描述符文件,但 Servlet 容器或应用服务器可能会使用此文件。 以下几节介绍了这些规则,并为可视组件的不同部分提供了开发提示。 组件类准则
组件应具有具体的属性,而不应依赖于 UIComponent 超类的通用属性功能。IDE 使用 JavaBeans 体系结构,并且要求使用包含存取方法的类型化属性。如果可能,应避免使用对象类型的属性,因为在 Java 代码中使用这种类型会要求进行强制类型转换。请改用适当类型的属性或者提供别名属性。例如,在组件代码中使用以下属性:
通过使用适当类型的属性或别名属性,IDE 用户可以使用 IDE 的代码完成功能,并且可以避免插入类型强制转换。用户不必编写如下所示的代码:
IDE 用户可以改为编写如下所示的代码:
组件应具有 style 属性。Java Studio Creator 使用此 style 属性来进行绝对定位。通常,组件还具有用于保存 CSS 样式类名称的 styleClass 属性。有关详细信息,请参见“呈现器准则”。 呈现器准则
组件的呈现器通常是作为单独的类来实现的。下面列出了用于编写呈现器的准则。
由于 IDE 在设计时调用呈现方法以在可视设计器中生成可视表示,因此,呈现器必须能够在特殊运行时情况下成功执行。例如,组件属性可能处于部分初始化状态,因为用户在设计过程中可能更改其属性,并且工具调用组件的呈现器以更新其可视表示。同样地,还可能需要重新初始化任何缓存帮助器组件或 facet。
除非传递属性中的用户标记,否则,应避免使用 ResponseWriter.write 方法。请改为使用
始终提供组件对 ResponseWrite 方法 将 style 属性传播到呈现的输出以便可以定位组件并调整其大小。对于具有单个顶级元素或单个可视顶级元素的组件,请复制该元素上的 style 属性。例如,如果 JavaServer Pages (JSP) 页面包含:
呈现的输出应该如下所示:
具有多个可视顶级元素的组件应包装在单个顶级元素中。
请按与 style 属性类似的方式来处理
通过对 标记处理程序准则
由于在设计时不执行与组件关联的 JSP 标记,因此,除了在具有类型转换的相关属性中进行复制外,这些标记不应包含任何其他逻辑。您需要遵循此准则以确保组件也可以与非 JSP 视图处理程序配合使用。 工具集成
组件的运行时部分包装在一个或多个运行时 JAR 文件中并部署到 Web 容器(如应用服务器)上。在设计时,除了设计时代码和元数据外,工具还可以使用某些运行时部分。Java Studio Creator 使用 JavaBeans 来存储静态设计时元数据,并依赖 Java Studio Creator 设计时 API 来启用动态设计时行为(有关 Java Studio Creator 设计时 API 规范,请访问 http://developers.sun.com/prodtech/javatools/jscreator/reference/docs/apis/designtime/)。 您可以使用 Java Studio Creator 设计时 API 来执行以下操作:
工具集成示例
IDE 需要知道组件与标记之间的映射,并且它从 BeanInfo 中获取此静态元数据。例如:
您可以手动编写 BeanInfo 类或使用代码生成器。代码生成器输入是一个 XML 文件 以下代码显示了呈现器所需的元数据。
您可能想知道什么是合格的动态设计时行为。下面这种情况就是此类动态行为的一个很好的示例:将一个表组件放在可视设计器中,然后创建一些伪行和列。通过使用 DesignInfo 类可以将动态行为与组件关联起来。您同样可以在上述 小结
您已了解了一些为 Java Studio Creator 2 IDE 编写定制组件(尤其是可视组件)时应牢记的准则。此外,您还了解了如何编写组件类,以及用于呈现器和标记处理程序文件的代码。 相关信息
功能简介文章 Sun Java Studio Creator 2 的 Java Studio Creator 设计时 API 简要介绍了 API。您可能还想了解 Java Studio Creator 设计时 API 规范。
|
| |||||||||||||||||||||||
|
| ||||||||||||