【问题标题】:Item Descriptor Inheritance in ATG for "contactInfo"“contactInfo”的 ATG 中的项目描述符继承
【发布时间】:2012-09-21 08:58:55
【问题描述】:

我正在尝试继承“contactInfo”项目并创建一个新的项目描述符。如下所示。

<item-descriptor name="testContactInfo" super-type="contactInfo">
    <table name="test_contact_info" type="auxiliary" id-column-name="contact_id" shared-table-sequence="1">
        <property name="fixedlinenumber" column-name="fixed_line_num" data-type="string"/>
    </table>
</item-descriptor>

启动服务器时出现以下错误。

14:19:52,856 ERROR [ProfileAdapterRepository] Error parsing template: atg.repository.RepositoryException: Your item-descriptor definition for testContactInfo has super-type contactInfo but no sub-type attribute.

我在这里做错了什么?我在 userProfile.xml 中保留了定义

【问题讨论】:

  • 如果您的问题已经回答,请标记正确答案。如果还没有,请进一步提问

标签: atg


【解决方案1】:

第一个问题:您是否真的希望创建 contactInfo 项目描述符的子类型 - 也就是说,您是否希望系统中有一些类型为 contactInfo 的项目和一些类型为 testContactInfo 的项目 - 或者你只是想要将自定义属性添加到现有的contactInfo 项描述符?

如果您实际上是在尝试创建contactInfo 的子类型,那么您需要修改contactInfo 的描述符以告诉它如何区分contactInfo 类型的项目和testContactInfo 类型的项目。您需要向contactInfo 添加一个属性,例如contactType,并设置子类型属性属性

<item-descriptor name="contactInfo" sub-type-property="contactType" ...>
  ...
  <property name="contactType" data-type="enumerated">
    <option value="standard"/>
    <option value="test"/>
  </property>
  ...
</item-descriptor>

然后你可以子类型化它

<item-descriptor name="testContactInfo" super-type="contactInfo" sub-type-value="test">
  ...
</item-descriptor>

但是,如果您只是想为其添加自定义属性,则可以很好地添加到现有定义中。您不需要子类型来扩展开箱即用的项目。例如

<item-descriptor name="contactInfo">
  <table name="test_contact_info" type="auxiliary" id-column-name="contact_id" shared-table-sequence="1">
    <property name="fixedlinenumber" column-name="fixed_line_num" data-type="string"/>
  </table>
</item-descriptor>

将导致一个名为 fixedlinenumber 的新属性添加到标准 contactInfo 项中。

【讨论】:

    【解决方案2】:

    项目描述符继承可以通过两种方式完成。你可以:-

    1. 为现有项目描述符添加新属性。 在这里,您可以将许多属性添加到现有的项目描述符。这可以是开箱即用的,也可以是您的自定义存储库。

    例如,您可以为contactInfo 项描述符设置一个employeeId 属性,该属性可用于所有contactInfo 项。

    1. 创建项目描述符的子类型。 这通常用于具有特定项目描述符的独特属性。

    例如,在您的contactInfo 类型中,您可以有一个“employeeContactInfo”,您希望在其中存储一个额外的员工ID,并且您可以有一个仅用于该类型的“employeeId”。

    所以,这基本上取决于您的要求。你可以在这个网站上看到一些细节......很好的教程:-

    http://learnoracleatg.blogspot.in/2014/11/art203-how-to-extend-out-of-box-non.htmlhttp://learnoracleatg.blogspot.in/2014/12/art204-how-to-add-new-item-descriptor.html

    【讨论】:

      猜你喜欢
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      相关资源
      最近更新 更多