目录
Java Studio Creator 2 组件:简介
Java Studio Creator 2 IDE 附带了一组捆绑的标准组件,您可以使用这些组件为应用程序开发可视界面。这些可重用的组件依赖于 JavaServer Faces™ 技术,它们是用户界面的基本组成块。由于 JavaServer Faces 组件满足了 Web 页请求和响应的最常见要求,因此,可通过组装这些标准组件来构建大多数的应用程序。 此外,还可以生成您自己的组件,并在其他应用程序中重用这些“定制”组件。通常,可通过扩展标准组件的 API 来生成新的组件。但是,需要牢记某些信息,您才可以确保生成的新定制组件能够很好地在 Java Studio Creator 2 IDE 中使用。 看完该简介后,您可能希望阅读其他深入探讨该高级主题的文章,例如: 还可以阅读《核心 JavaServer Faces》一书,此处提供了其中的一些章节。 为什么应该使用组件? IDE 包含的标准组件使用 JavaServer Faces 技术来处理应用程序中的各种任务。例如,组件可以处理它在页面上的显示或呈现方式。并将其属性的内部表示编码为合适的标记语言以进行页面呈现。同时,组件还会将与传入请求关联的属性转换为自己的相应属性。也就是说,组件将传入请求的参数、头和 Cookie 解码为属性。 除了让 JSF 组件将传入请求转换为组件可使用的形式外,组件还使用 JavaServer Faces 技术来验证请求的语法和语义。组件还可以在多个请求之间保存和恢复它们的状态。它们可以将事件放在队列中以实现一个或多个组件的状态更改。 何时不生成组件 将组件放到 Java Studio Creator 页面上时,您可能(并且很可能)更改其属性以满足应用程序的要求。通过执行此操作,您可以根据具体的需要来定制该标准组件。 例如,如果只想更改标准组件的可视表示或者要更改其解码行为(例如,组件处理传入请求的方式),并不真正需要生成全新的定制组件。则只需定制现有的标准组件,即通过更改其属性值来更改其可视表示。还可以定制现有的组件来更改其处理请求的方式。虽然组件可以将处理请求操作委托给单独的呈现器(呈现器用于确定如何向用户显示组件,并避免应用程序遇到这些问题)来执行,但这样做与生成新组件一样繁琐。在您编写自己的呈现器时,就如同生成定制的组件一样,仍然需要执行许多相同的定义和包装任务。 何时生成定制组件 生成新组件与定制或使用现有的组件是不相同的。如果您不想通过组件的属性来更改组件的行为,则需要考虑生成定制组件。 组件供应商或组件开发者生成定制组件是由于业务需要:他们生成复杂的组件以提供标准组件不具备的功能。作为应用程序开发者,您可能需要生成定制组件以添加到标准组件中或修改标准组件的工作方式。例如,如果您需要一个支持新类型事件的组件,则需要考虑生成定制组件。出于类型安全方面的原因,每个标准组件只支持一种特定类型的事件。无法将一个组件的事件类型扩展为一种不同的新事件类型。 您可能还需要生成一个定制组件,为其指定任何标准组件所不具有的行为。另外,当您需要取代标准组件的工作方式,即需要取代该组件的解码、转换、验证和在请求之间处理状态(保存和恢复状态)的方式时,可以考虑生成定制组件。例如,您可能不想在请求之间保留组件的状态。或者,您可能希望组件具有其标准属性以外的其他属性。在这种情况下,您自己的组件包含了标准组件的扩展,这样它不但提供了标准属性,并且还实现了其他属性。 如何生成定制组件 您无需从头开始生成定制组件。生成定制组件的最简便方法是对现有的标准组件进行扩展。通过选择一个功能近似于定制组件的标准组件,定制组件可以继承标准行为的有用部分。 编写定制组件功能
要选择一个标准组件进行扩展,则首先按照您需要该组件执行的操作对其进行分类。组件类型可划分为以下几类:输出、输入、控制或容器组件,有时是这些类型的组合。例如,定制组件可以只显示某些数据,或者可以接受某些用户输入。如果只用于显示,则需要对 JSF 标准输出 (UIOutput) 组件进行扩展。如果组件处理输入数据,则还应考虑它接受的输入类型。如果组件接受简单的文本输入,在这种情况下应对 JSF UIInput 组件进行扩展。如果希望组件接受用户从列表中选择的输入,这可能包含对一个或多个数据片段的选择。这时请考虑是对 UISelectOne 组件(从列表中选择一项)进行扩展还是对 UISelectMany 组件(选择多项)进行扩展。 当用户激活控制类型的组件(如按钮)时,该组件将触发特定于应用程序的命令或操作。对于这些组件,应扩展 UICommand。组件也可以是一个包含或嵌套其他组件的容器。对于这些组件,应扩展 UIPanel。 有时,您希望定制组件具有组合的标准组件的行为。在这种情况下,应扩展一个标准类来获取某种类型的行为,然后实现 JSF 行为接口来获取另一种类型的行为。例如,假设您希望组件接受输入操作并处理控制操作。您可以扩展 UIInput 标准组件以添加输入行为,然后实现 JSF 在某些情况下,您可以为所有组件扩展抽象基类 UIComponentBase。如果在标准组件中找不到非常匹配的行为,可以考虑使用这种方法。UIComponentBase 类提供了几乎每种组件方法的缺省实现。然后,您就可以将精力主要投身于定制组件的独有特性中(通过以下网址 http://java.sun.com/j2ee/javaserverfaces/reference/api/index.html,您可以获取 JavaServer Faces 规范,它详细介绍了可用的接口和组件类)。 为了说明这一点,让我们了解一下创建定制的日历组件(即允许用户选择日期的日期选取器组件)需要包含哪些内容(请参见图 1)。“日期选取器”与另一个显示日期的定制组件“日期显示器”包装在一起。可以从样例组件页中获取这些组件进行演示和下载。
首先,为您的组件扩展相应的 UIComponent 类,并为组件指定单一类型的名称字符串作为标识。例如,可以使用字符串 为使用户能够在 IDE 属性表单中查看组件的属性,该属性必须是包含类型化存取方法的 JavaBeans 组件属性。目前,IDE 要求组件包含 创建组件工件和组件库
在您生成定制组件时,除了定制组件外,您还会创建一组工件(如呈现器、元数据和图标图像),然后将所有这些内容包装在组件库或单个归档文件(称为 生成定制的 JSF 组件需要编写三种类型的类以及一些元数据,所有这些内容都将作为运行时 JAR 的一部分部署到服务器上。让我们了解一下生成日期选取器组件需要执行哪些操作。您需要编写 UIComponent 类本身,即 JSF 实现使用 Java Studio Creator IDE 通过您为组件提供的额外设计时工件来改进该设计体验。这些工件包括另一个元数据文件 要完成组件包装,请收集所有工件以及清单文件,然后将所有内容放在 在 Creator 应用程序中使用定制组件 在使用 Java Studio Creator IDE 开发的应用程序中,可以使用您自己的定制组件或其他供应商提供的定制组件。 有关定制组件并导入在应用程序中使用的组件的说明,请参见在 Sun Java Studio Creator 2 环境中编写 JavaServer Faces 定制组件和在 Sun Java Studio Creator 2 中编写定制组件的规则。 通过执行以下简单步骤,您可以在应用程序中使用定制组件。首先,将组件库包文件( IDE 导入组件库文件时,它将对包进行扩展并装入组件的 确保组件能够很好地在 IDE 中使用 可以执行某些操作来改进定制组件在 IDE 中的工作方式。正如前面所述,IDE 要求组件具有 style 属性( 熟悉 JavaBeans 体系结构是很有帮助的,因为 IDE 将组件作为 JavaBeans 组件进行处理。特别是,您应该了解 通常,将在运行时 JavaServer Faces 框架中调用组件方法。Java Studio Creator IDE 本身也会调用一些在 JSF 生命周期中支持组件角色的方法,特别是调用一些通过呈现组件树来生成其应用程序页面设计视图的方法。因此,在组件方法中引用应用程序的外部上下文时要特别小心,因为通常在应用程序 Servlet 上下文中出现的对象可能在 IDE 中不存在。这意味着,IDE 无法呈现组件;如果出现这种情况,组件在 IDE 的设计视图中也是不可见的。 小结 现在,您应该了解了定制标准组件和生成新组件之间的区别以及这些任务中涉及的概念,并且,您还应该清楚 JavaServer Faces 技术在 Java Studio Creator 2 组件中发挥的作用。 |
| |||||||||||||||||||||||||||||||||
|
| ||||||||||||