我正在尝试继承“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
中答案 0 :(得分: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项中。
答案 1 :(得分:0)
项目描述符继承可以通过两种方式完成。你可以: -
例如,您可以将employeeId属性设置为contactInfo项描述符,该属性可用于所有contactInfo项。
例如,在您的contactInfo类型中,您可以拥有一个“employeeContactInfo”,其中您要存储额外的员工ID,并且您只能为此类型设置“employeeId”。
所以,它基本上取决于你的要求。你可以在这个网站上看到一些细节..很好的教程: -
http://learnoracleatg.blogspot.in/2014/11/art203-how-to-extend-out-of-box-non.html 和 http://learnoracleatg.blogspot.in/2014/12/art204-how-to-add-new-item-descriptor.html