我正在使用Hybris 6.7.0版,但遇到以下问题: 当我尝试执行从excel文件导入产品时。它给我以下错误->
我已经检查了excel文件,当然还有“ Subscription Term *”字段,这是强制性的,这就是为什么这里有一个星号的原因。值得一提的是,该字段是自定义的,因此我向其编写了自定义转换器,并且导出部分工作正常,但是在调试时导入部分时,我发现了一个奇怪的事实:
此 WorkbookMandatoryColumnsValidator 验证器从 DefaultExcelTemplateService 调用方法 findColumnIndex(typeSystemSheet,sheet,this.prepareSelectedAttribute(mandatoryField)); ,此方法返回-1,并且验证未通过。我深入研究了这种方法,并提供了以下代码行:
字符串attributeDisplayName = this.findAttributeDisplayNameInTypeSystemSheet(typeSystemSheet,selectedAttribute); ,它将返回“订阅条款”字符串,如您所见,没有星号。
我已经检查了其他必填字段,例如它返回“目录版本* ^”,其后带有2个符号。
问题是字符串相等操作后的“ Subscription Term”和“ Subscription Term *”返回false,并且验证失败,如下所示:
attributeDisplayName.equals(this.getCellValue(headerRow.getCell(i)))。
当然,第二个值是从出现星号的excel文件中获取的。
如果从Excel文件中删除星号,则会收到: WorkbookTypeCodeAndSelectedAttributeValidator 验证程序中ISku类型的未知属性错误:
星号应显示在excel文件中,我刚刚检查了会是什么...
完全无法理解真正发生的事情。
我无法理解一件事:“订阅条款”字符串的来源是什么?为什么没有星号?它在某处预定义了常量吗?
从调试中,我无法确定该字符串来自哪个来源。
答案 0 :(得分:0)
我不确定,但是我希望该字符串(即 Subscription条款)来自基于后台当前会话语言(例如 {extensionName} -locales_en.properties)的本地化文件(如果当前语言为en)。
尝试在所有属性文件中的“ 订购条款”之后搜索。
也许,如果该属性是强制性的(即items.xml中的 optional =“ false” ),则Hybris在执行导入时会在其名称上添加“ *”。
答案 1 :(得分:0)
检查是否为该用户提供了对该属性的读写权限。 请先与管理员用户联系。如果管理员用户没有问题,则该用户只有权限问题。