首页 文章

ATG中“contactInfo”的项描述符继承

提问于
浏览
0

我试图继承“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中保留了定义

2 回答

  • 1

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

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

    <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项中 .

  • 0

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

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

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

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

    例如,在您的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

相关问题