基本自定义 > 用户界面自定义 > 信息页面 > 解决方案
  
解决方案
创建一个可扩展 DefaultInfoComponentBuilder 的构建器 Java 类,该类将针对特定业务对象类型定义要呈现在信息页面上的元素。属性的布局由“类型和属性管理”实用程序中的属性布局管理器控制。
必备知识
要应用此信息,需要了解以下内容:
用于创建 Java 构建器类的 MVC 框架 (请参阅 MVC 组件)
Windchill 中基于 JSP 的客户端体系结构框架 (请参阅 Windchill 客户端体系结构概述)
Windchill 客户端体系结构中的操作框架 (请参阅 Windchill 客户端体系结构的操作框架)
如何使用 Type and Attribute Management 实用程序管理属性布局 (请参阅类型和属性管理实用程序)
解决方案元素
在使用此组件时,开发人员需要通过扩展 DefaultInfoComponentBuilder 来创建构建器。
元素
类型
说明
DefaultInfoComponentBuilder.java
Java 类
所有其他信息页面构建器均应从中进行扩展的默认构建器。构建器负责从服务器收集所需的数据。
用于生成信息页面的核心元素如下所示。开发人员不会对这些应用程序进行覆盖。构建器可供开发人员控制在业务对象信息页面上显示哪些项,而“类型和属性管理”实用程序可用于控制属性的布局。
元素
类型
说明
infoPage.jsp
JSP
所有信息页面操作应调用的 JSP。该元素会调用 begin.jspf/end.jspf,以及调用 MVC taglib 中的 infoPage 标记。
infoPage.tag
标记,在 MVC taglib 中定义
用于设置 JSP 上下文并创建信息页面 ComponentDefinition 对象。该元素会调用组件 taglib 中的 renderInfoPageModel 标记,以及调用 JavaScript 呈现器以生成信息页面的 HTML。
RenderInfoPageModelTag.java
Java 标记,在 组件 taglib 中定义
用于从构建器中的数据构造一个 JSON 对象 (也称为 InfoModel),并将 JSON 对象写出到其打印流。
infoPage.jsfrag
JavaScript 片段
使用 JSON InfoModel 对象的 JavaScript 呈现器。该元素会生成信息页面的 HTML。
myTab.jsfrag
JavaScript 片段
用于呈现顶层选项卡,并提供在选项卡内容区域中移动项的功能。
支持元素
元素
类型
说明
attributePanel.jsp
JSP
要调用以呈现“属性面板”的 JSP。“属性面板”组件用于显示“属性”和“可视化和属性”小组件。“属性面板”中属性的布局由“类型和属性管理”实用程序中的属性布局管理器控制。有关详细信息,请参阅属性面板
attributePanel.tag
标记,在 MVC taglib 中定义
设置 JSP 上下文并创建属性面板 ComponentDefinition 对象。该元素会调用组件 taglib 中的 renderAttributePanel 标记,以及调用 JavaScript 呈现器以生成属性面板的 HTML。
RenderAttributePanelTag.java
Java 标记,在 组件 taglib 中定义
用于从构建器中的数据构造一个 JSON 对象 (也称为 InfoModel),并将 JSON 对象写出到其打印流。
attributePanel.jsfrag
JavaScript 片段
JSON InfoModel 对象中使用的 JavaScript 呈现器。该元素会生成属性面板的 HTML。
信息页面处理流
首先调用构建器以从服务器收集所需的数据。构建器会将请求转发到视图 (即 infoPage.jsp)。默认视图 infoPage.jsp 包括 infoPage 标记。此标记会从通过构建器收集的数据创建一个 JSON 对象,即 infoModel 对象。infoModel 已序列化 (通过将其作为 JSON 字符串写出到 JSP 编写器) 并传递至最终生成 HTML 的 JavaScript 呈现器。
以下是呈现信息页面的过程序列:
信息页面构建器设计者
为新的业务对象类型创建信息页面时,开发人员必须创建一个可扩展 DefaultInfoComponentBuilder 的构建器。构建器类需要包括以下 Java 注释,以便为该业务对象类型调用正确的构建器:
@ComponentBuilder(value = ComponentId.INFOPAGE_ID)
@TypeBased(value = "wt.part.WTPart")
public class PartInfoBuilder extends DefaultInfoComponentBuilder {
….
构建器 ID 的注释在超类 DefaultInfoComponentBuilder 中指定。注释被继承,因此,在扩展此类时,ComponentBuilder 注释不是必需的。如存在此注释,并不会对任何内容造成任何损害;如果要扩展此类,请确保将此注释包括在内。
有关如何注册构建器类或包的详细信息,请参阅 MVC 组件
唯一需要覆盖的方法为 buildInfoConfig() 方法。在此方法中,您可以设置您想要在该业务对象类型的信息页面上显示哪些元素,并调用所需的服务 API 来收集这些元素的数据。有关这些元素的详细信息,请参阅“信息页面构建器中的自定义选项”。
构建器的注释可以包含不可变类型或子类型:
@TypeBased(value = "wt.part.WTPart")
@TypeBased(value = " com.company.SoftType")
有关详细信息,请参阅 MVC 组件概述中的 TypeBased