我正在使用 Hybris 6.7.0 版,但遇到以下问题:当我尝试从 excel 文件导入产品时。它给了我以下错误->
我检查了excel文件,当然有“订阅期限*”字段,这是强制性的,这就是为什么那里有一个星号。值得一提的是,这个字段是自定义的,所以我为它编写了自定义翻译器并且导出部分工作正常,但是在我进行调试时导入部分我发现了一个奇怪的事实:
这个WorkbookMandatoryColumnsValidator验证器调用方法findColumnIndex(typeSystemSheet, sheet, this.prepareSelectedAttribute (必填项)); 从DefaultExcelTemplateService此方法返回 -1 并且验证未通过。我深入研究了这个方法,有这样一行代码:
String attributeDisplayName = this.findAttributeDisplayNameInTypeSystemSheet(typeSystemSheet, selectedAttribute);它返回“订阅期限”字符串,如您所见,没有星号。
我检查了其他必填字段,例如“目录版本*^”,它返回后有 2 个符号。问题是字符串相等操作后的“订阅期限”和“订阅期限*”返回 false 并且验证失败,如您在此处看到的:
attributeDisplayName.equals(this.getCellValue(headerRow.getCell(i)))。
当然,第二个值取自星号符号所在的 excel 文件。
如果我从 excel 文件中删除星号,则会收到:WorkbookTypeCodeAndSelectedAttributeValidator验证器中 ISku 类型错误的未知属性:
星号应该出现在 excel 文件中,我刚刚检查了会是什么......
它根本无法帮助我理解真正发生的事情。
我无法理解一件事:“订阅期限”字符串的来源是什么?为什么没有星号?它是在某处预定义的常量吗?
从调试中我无法弄清楚该字符串来自哪个来源。