定制(jaloclass)枚举类型:"与EnumerationValue不兼容"异常

2020-09-30 01:43发布

         点击此处--->   EasySAP.com群内免费提供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'
  

         点击此处--->   EasySAP.com群内免费提供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'
  
付费偷看设置
发送
5条回答
愤怒的猪头君
1楼-- · 2020-09-30 02:38

据我所知,您错过了扩展EnumerationValue的枚举

公共枚举MyItemEnum扩展了EnumerationValue {....}

而且,构造函数应与该类具有相同的名称:

MyEnumType(最终字符串代码){this.code = code.toLowerCase(); }

悠然的二货
2楼-- · 2020-09-30 02:18

在Hybris 5.2.0.8上运行。

Baoming ROSE
3楼-- · 2020-09-30 02:45

问题:为什么只想使用小写的值,为什么要使用自定义枚举类型?

也许更简单的解决方案是调整位置,您要使用小写字母值,并仅使用.tolowercase()调用?

Baoming ROSE
4楼-- · 2020-09-30 02:36

这与Java枚举本身无关,而与扩展Java接口EnumerationValue有关,您正在尝试改编

shere_lin
5楼-- · 2020-09-30 02:21

嗨Rainer,

问题不是"为什么?"; 问题是"可能吗?"。

一周热门 更多>