点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我最初的工作重点是使枚举值以小写形式返回,即使默认情况下在item.xml文件中以大写形式定义了枚举值也是如此:
MyItem的值
我试图创建一个使用" jaloclass"属性的枚举,以便提供一个自定义构造函数,该构造函数以小写格式返回枚举代码:
MyItem的值
item.xsd 中的enum的" jaloclass"文档说:
指定关联的jalo类的名称。 指定的类必须扩展de.hybris.platform.jalo.enumeration.EnumerationValue,并且不会生成。 通过指定一个jalo类,您可以更改实现以用于此枚举的值。 默认情况下,使用EnumerationValue类。
由于jalo枚举类不是自动生成的,因此我在我的包下手动创建了它:
包com.example.ecommerce.jalo.cms.enums;
公共枚举MyItemEnum {
ORDERS(" ORDERS"),
地址(" ADDRESSES");
私有的最终String代码;
MyItemEnum(最终字符串代码){this.code = code.toLowerCase(); }
public String getCode(){返回this.code; }
public String getName(){返回this.toString(); }
}
但是" ant updatesystem"失败,但出现以下异常:
[java] 2017年1月11日17:22:20,939错误de.hybris.platform.util.EJBTools-de.hybris.platform.jalo.JaloSystemException:mosaicstorefront类型initializer initializeCreateTypes()期间发生错误 'MyAccountSectionEnum'类型的'com.nespresso.ecommerce.mosaic.storefront.jalo.cms.enums.sensitive.MyAccountSectionEnum类与超类'de.hybris.platform.jalo.enumeration.EnumerationValue'不兼容 1]
[java] de.hybris.platform.jalo.JaloSystemException:马赛克商店正面类型初始化程序初始化时发生错误initializeCreateTypes():类'MyAccountSectionEnum'类型的类'com.nespresso.ecommerce.mosaic.storefront.jalo.cms.enums.sensitive.MyAccountSectionEnum'类 与超类'de.hybris.platform.jalo.enumeration.EnumerationValue'不兼容[HY--1]
[java]位于de.hybris.platform.persistence.AbstractTypeInitializer.initializeCreateTypes(AbstractTypeInitializer.java:3026)
[java]位于de.hybris.platform.persistence.extension.ExtensionEJB.initializeCreateTypesTypeInitializer(ExtensionEJB.java:59)
[java]位于de.hybris.platform.persistence.extension.ExtensionManagerEJB.initializeCreateTypes(ExtensionManagerEJB.java:130)
如何弄清楚? 预先感谢。
编辑我也尝试将EnumerationValue用作jaloclass,并将枚举类型和值的生成使用自动创建。 在这种情况下,将创建枚举类型并生成其值,但是代码始终不可写。
枚举是在com.nespresso.ecommerce.web.core.enums包下生成的,因此我尝试在同一包下手动创建枚举并关闭自动创建。
但是它失败,并出现编译错误:
java.lang.IllegalStateException:无效的元素((((myproject)):: YEnumValue [myproject-items.xml:71(EnumValueTagListener)]])由于缺少元类型'MyItemEnum'
据我所知,您错过了扩展EnumerationValue的枚举
公共枚举MyItemEnum扩展了EnumerationValue {....}
而且,构造函数应与该类具有相同的名称:
MyEnumType(最终字符串代码){this.code = code.toLowerCase(); }
在Hybris 5.2.0.8上运行。
问题:为什么只想使用小写的值,为什么要使用自定义枚举类型?
也许更简单的解决方案是调整位置,您要使用小写字母值,并仅使用.tolowercase()调用?
这与Java枚举本身无关,而与扩展Java接口EnumerationValue有关,您正在尝试改编
嗨Rainer,
问题不是"为什么?"; 问题是"可能吗?"。
一周热门 更多>