JSP 和标记
将多个标记和 taglib 作为框架的一部分进行传送。这些 taglib 包含一组处理程序,用于将组件和其他常用功能包括到页面中。生成许多组件 (表格、树、特性面板、向导等) 的基本步骤如下:
描述组件 (JSP)
获取必要的数据 (数据采集标记)
呈现组件 (组件呈现器标记)
这些阶段的配置通过调用 JSP 页面中的标记处理程序来完成。要使用标记,需要包括组件库。以下代码片段包括存储库:
<%@ taglib uri="http://www.ptc.com/windchill/taglib/components" prefix="jca"%>
控制器 - JSP
JSP 的基本元素
您需要了解一些重要的 jsp 片段文件。第一个也是最重要的是 begin.jspf。此文件存在于 codebase/netmarkets/jsp/util/ 中。此 jspf 的用途是:
包括用于呈现所有页面周围的 shell 的标记。
请注意内务处理,如下所示:
实例化 bean (上下文、剪贴板等)
执行命令 (仅用于操作)
包括某些 JS 函数
为页面数据创建 ONE 表单 (称为 mainform)
提供对关闭弹出窗口和刷新主页的支持
其中包括的另一个 jspf 是 end.jspf,其也位于 codebase\netmarkets\jsp\util\ 中。此文件的用途是:
标记内容区域的开头和结尾以进行 DHTML 内容切换
捕捉异常并对其进行处理 (如果异常出现在页面中)
构造向导时,应使用 netmarkets\jsp\components 中的特殊 beginWizard.jspf 文件来代替 begin.jspf,而该文件的作用基本上与 begin.jspf 相同。
组件说明标记
组件说明标记是 jsp 中所包含的第一个标记。这些标记通常采用 describe*Tag 的形式。(例如 DescribeTableTag)
组件说明标记可定义组件将显示的列/特性。这种情况首先在 JSP 中发生,原因在于检索数据的方式可能取决于所请求的特性。在组件说明阶段,开发人员使用 "describe" 标记处理程序,向基础结构告知他们要显示的组件。示例说明处理程序是 describeTable,可能如下所示:
<jca:describeTable var="tableDescriptor" id="my.table.id" configurable="true"
type="com.myco.MyType" label="${myLabel}">
<jca:setComponentProperty key="actionModel" value="my action model"/>
<jca:describeColumn id="name"/>
<jca:describeColumn id="nmActions" />
<jca:describeColumn id="status">
<jca:setComponentProperty key="percent" value="true"/>
</jca:describeColumn>
</jca:describeTable>
示例的结构
标记包含一组嵌套的标记,这些标记为其提供了某种结构。存在两种嵌套标记:
setComponentProperty
此标记可配置其父标记的特性,这些特性不会作为父标记本身的属性公开。这样一来,基础结构和开发人员便可以灵活地选择自己希望在将来使用的元数据,而不必总是需要更新标记库定义 (tld) 来执行此操作。
describeColumn
此标记可描述开发人员要显示的特定列。与父项 describeTable 标记一样,此标记也可接受子项 setComponentProperty 标记。还有 describeProperty 标记,该标记在特性面板中使用时具有相同的语义。
describeTable 标记只配置用于实现 ComponentDescriptor 接口的 java bean。通过标记处理程序提供的属性通常对应于 ComponentDescriptor 的特性。牢记 ComponentDescriptor 对象,原因在于该对象稍后会在数据采集阶段发挥作用。
describe 标记处理程序构建的 ComponentDescriptor 对象通过所需的 "var" 属性传递到其他部分。无论 var 属性值是什么,处理程序均可为 ComponentDescriptor 对象创建作用域变量。在上面的示例中,var 属性已映射到 "tableDescriptor",但可将其映射到任何合法的 JSP 变量标识符。请注意,var 属性的这种语义可从 JSTL 标记处理程序中重用。由于 ComponentDescriptor 对象为作用域属性,因此可以稍后在页面中使用 JSP EL 和 Java 代码对其进行参考。例如,后续的标记现在可以使用 $ {varName} 语法来参考描述符。
模型 - 数据采集标记
必要的模型数据通过数据采集标记获取。这些标记通常采用 get*Tag 的形式。(例如 getModelTag)
数据采集标记将是第二阶段,并且将在 jsp 中排在第二位。这是因为数据采集标记会基于组件说明标记中的说明获取模型数据。在数据采集阶段,开发人员将组件说明与一些有关如何实际获取将返回组件的数据的附加信息相结合。获取表格模型的示例可能如下所示:
<jca:getModel var="tableModel" descriptor="${tableDescriptor}"
serviceName="com.myco.MyService"
methodName="getMyObjects">
<jca:addServiceArgument value="${myArgument}" type="java.lang.Long"/>
</jca:getModel>
示例的结构
描述符和 var
标记通过使用 EL 查找作用域为 "tableDescriptor" 的变量来获取组件说明。tableDescriptor 变量通常由先前的 describe 标记置于页面中,该标记具有 var 值 "tableDescriptor"。
与 describe 标记一样,get 标记会生成 java bean,该项将作为以 var 属性值命名的作用域变量添加到页面中。对于 get 标记,生成的 bean 为 ComponentModel 的实例。
作用
开发人员通常不与 get 标记生成的 ComponentModel 对象进行交互,而是提供有关客户端基础结构调用并转换为 ComponentModel 的某些较低级别 API 的信息。例如,上面的示例代码将调用 com.myco.MyService.getMyObjects (myArgument) 方法,获取结果并将其转换为 ComponentModel 对象。
视图 - 组件呈现器标记
视图由组件呈现器标记呈现。这些项通常采用 render*Tag 的形式 (例如 RenderTableTag)
这将生成基于模型数据的 HTML 和 JavaScript。对于开发人员而言,使用组件呈现器标记进行呈现通常非常简单。Windchill 客户端体系结构提供了一些呈现标记,这些呈现标记采用由 "get" 标记生成的 ComponentModel,并将其转换为 HTML 和 JavaScript。与 get 标记一样,这些标记使用 EL 来接受页面中的作用域变量数据:
<jca:renderTable model="${tableModel}"/>
示例的结构
在这种情况下,表格呈现器将采用分配给作用域变量 "tableModel" 的输入 ComponentModel,并将其呈现为表格。
支持的组件
向导 (创建/编辑)
特性面板
属性表
更多资源
标记库文档
Windchill 标记库文档随产品一起提供,并可通过 UI 进行访问。要查找文档,首先启用自定义示例和工具,然后浏览至自定义导航并选择工具选项。
在页面的 API 文档部分中,您将找到指向 Windchill 标记库文档的链接
相关自定义文档
属性面板
这对您有帮助吗?