为什么通过 enumtype dynamic="false" 设置为 false?
Why by enumtype dynamic="false" is set to false?
为什么将enumtype dynamic="false"
设置为false?我应该什么时候将其设置为 "true"
?
<enumtype code="MyEnumType" generate="true" autocreate="true" dynamic="false">
<value code="NONE" />
<value code="ONE" />
</enumtype>
我想我很难找到答案:
INSERT_UPDATE ManufacturerName;code[unique=true];name[lang=de];name[lang=en]
,,,,Exception : line 9: cannot create ManufacturerName with values ItemAttributeMap[ registry: null, type: <null>, data: {code=00000023344, name={8796093054536->de=3D , 8796093054536->en=3D }} ] due to [de.hybris.platform.servicelayer.interceptor.impl.EnumerationValidator@197d511d]:Enum type ManufacturerName is not dynamic - can not create new enum value 00000023344. If you want to add a new value to this type you have to define the enum type as non dynamic at items.xml (needs system update afterwards).
使用 hybris 枚举类型,您可以选择定义静态枚举或动态枚举。静态(动态="false")意味着枚举只包含定义的元素。在运行时,您将永远无法向枚举中添加元素。这在您使用动态枚举 (dynamic="true") 时有所不同。使用动态枚举,您可以在运行时添加值。因此,如果您希望您的枚举是静态的,请使用 dynamic="false"。如果要在运行时添加值,请使用 dynamic="true"。
简单来说,我可以说静态枚举(dynamic="false"
,默认值)是作为 Java 枚举生成的。其中值列表只能在编译期间通过更改 items.xml 来更改。对于动态枚举(dynamic="true"
),我们可以在运行时使用 hmc 或 Impex 更改(add/remove)它的值。
静态枚举:
<enumtype code="FixedValueType" autocreate="true" generate="true">
<value code="value1"/>
<value code="value2"/>
</enumtype>
动态枚举:
<enumtype code="OrderStatus" autocreate="true" generate="true" dynamic="true">
<value code="CREATED"/>
<value code="ON_VALIDATION"/>
<value code="COMPLETED"/>
<value code="CANCELLED"/>
</enumtype>
more about hybris enum
如果是dynamic ="false"
,表示相当于java_Enum
(不可修改)
如果 dynamic ="true"
,它充当 hybris_Enum
(即,您将能够在运行时通过 hac 添加额外的枚举值 Types
)。
为什么将enumtype dynamic="false"
设置为false?我应该什么时候将其设置为 "true"
?
<enumtype code="MyEnumType" generate="true" autocreate="true" dynamic="false">
<value code="NONE" />
<value code="ONE" />
</enumtype>
我想我很难找到答案:
INSERT_UPDATE ManufacturerName;code[unique=true];name[lang=de];name[lang=en]
,,,,Exception : line 9: cannot create ManufacturerName with values ItemAttributeMap[ registry: null, type: <null>, data: {code=00000023344, name={8796093054536->de=3D , 8796093054536->en=3D }} ] due to [de.hybris.platform.servicelayer.interceptor.impl.EnumerationValidator@197d511d]:Enum type ManufacturerName is not dynamic - can not create new enum value 00000023344. If you want to add a new value to this type you have to define the enum type as non dynamic at items.xml (needs system update afterwards).
使用 hybris 枚举类型,您可以选择定义静态枚举或动态枚举。静态(动态="false")意味着枚举只包含定义的元素。在运行时,您将永远无法向枚举中添加元素。这在您使用动态枚举 (dynamic="true") 时有所不同。使用动态枚举,您可以在运行时添加值。因此,如果您希望您的枚举是静态的,请使用 dynamic="false"。如果要在运行时添加值,请使用 dynamic="true"。
简单来说,我可以说静态枚举(dynamic="false"
,默认值)是作为 Java 枚举生成的。其中值列表只能在编译期间通过更改 items.xml 来更改。对于动态枚举(dynamic="true"
),我们可以在运行时使用 hmc 或 Impex 更改(add/remove)它的值。
静态枚举:
<enumtype code="FixedValueType" autocreate="true" generate="true">
<value code="value1"/>
<value code="value2"/>
</enumtype>
动态枚举:
<enumtype code="OrderStatus" autocreate="true" generate="true" dynamic="true">
<value code="CREATED"/>
<value code="ON_VALIDATION"/>
<value code="COMPLETED"/>
<value code="CANCELLED"/>
</enumtype>
more about hybris enum
如果是dynamic ="false"
,表示相当于java_Enum
(不可修改)
如果 dynamic ="true"
,它充当 hybris_Enum
(即,您将能够在运行时通过 hac 添加额外的枚举值 Types
)。