在 Hybris 中本地化枚举类型时如何解决 java.lang.IllegalStateException?

问题描述

我在 trainingcore-items.xml 中定义了 ServiceType enumtype 和 Service itemtype。

    <typegroup name="Services">
    <itemtype code="Service" autocreate="true" generate="true">
       <deployment typecode="23456" table="Service"/>
        <attributes>
            <attribute qualifier="code" type="localized:java.lang.String" autocreate="true" 
           generate="true">
                <persistence type="property"/>
                <description>Service Code</description>
                <modifiers unique="true" read="true" write="true"/>
            </attribute>
            <attribute qualifier="serviceType" type="localized:ServiceType" autocreate="true" 
          generate="true">
                <persistence type="property"/>
                <description>Service Type</description>
                <modifiers read="true" write="true"/>
            </attribute>
            <attribute qualifier="years" type="localized:java.lang.Integer" autocreate="true" 
            generate="true">
                <persistence type="property"/>
                <description>Service Years</description>
                <modifiers read="true" write="true"/>
            </attribute>



        </attributes>
    </itemtype>
</typegroup>


<enumtype code="ServiceType" autocreate="true" generate="true" dynamic="true">
    <value code="Basic"></value>
    <value code="BasicOnsite"></value>
    <value code="Advanced"></value>
</enumtype>

我在适当的文件中提供了本地化的值: trainingcore_locales_en.properties:

type.Service.name=Service
type.Service.code.name=code
type.Service.serviceType.name=serviceType
type.Service.years.name=years

type.ServiceType.name=ServiceType
type.ServiceType.Basic.name=Basic
type.ServiceType.BasicOnsite.name=BasicOnsite
type.ServiceType.Advanced.name=Advanced


type.ProductServiceRelation.name= ProductServiceRelation

但是当我运行 ant clean all 时,构建失败并出现此错误

java.lang.IllegalStateException: invalid descriptor Service.serviceType(localized:ServiceType):((trainingcore))::YAttributeDescriptor[trainingcore-items.xml:190(AttributeTagListener)][PROPERTY] due to missing type 'localized:ServiceType'

请帮我解决这个错误

解决方法

这个问题与您的另一个问题有关:How to localize a custom type created in trainingcore-items.xml in Hybris?

只需将 type="localized:ServiceType" 更改为 type="ServiceType" 就可以了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...