尝试通过SmartEdit编辑嵌套组件时出错

2020-08-19 18:47发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


使用高级编辑时-在嵌套编辑器弹出窗口中发生错误。

弹出窗口显示嵌套的组件-但每个嵌套的组件都有一个错误替代文本

控制台也显示2个错误请求。 替代文字

在处理嵌套组件之前,似乎目录版本已丢失。

控制台日志中的错误是:INFO [hybrisHTTP31] [RestHandlerExceptionResolver]翻译异常[java.lang.IllegalArgumentException]:catalogVersion不能为null或为空ERROR [hybrisHTTP31] [RestHandlerExceptionResolver] java.lang.IllegalArgumentException:catalogVersion不得为 位于de.hybris.platform.cms2.servicelayer.daos.impl.DefaultCMSItemDao.findByUid(DefaultCMSItemDao.java:54)处com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)处的null或空白。 hybris.platform.cms2.servicelayer.services.admin.impl.DefaultCMSAdminItemService.findByUid(DefaultCMSAdminItemService.java:50)位于de.hybris.platform.cms2.servicelayer.services.admin.impl.DefaultCMSAdminItemService.findByUid(DefaultCMSAdminItemService.java:69) )的de.hybris.platform.cmsfacades.uniqueidentifier.functions.DefaultCmsItemModelUniqueIdentifierConverter.convert(DefaultCmsItemModelUniqueIdentifierConverter.java:96)的de.hybris.platform.cmsfacades.uniqueidentifier.functions.Def aultCmsItemModelModelUniqueIdentifierConverter.convert(DefaultCmsItemModelUniqueIdentifierConverter.java:1)at de.hybris.platform.cmsfacades.uniqueidentifier.impl.DefaultUniqueItemIdentifierService.lambda $ 4(DefaultUniqueItemIdentifierService.java:112)at java.util.Optionalmap(可选)。 de.hybris.plats.cmsfacades.uniqueidentifier.impl.DefaultUniqueItemIdentifierService.getItemModel(DefaultUniqueItemI155)上的de.hybris.platform.cmsfacades.uniqueidentifier.impl.DefaultUniqueItemIdentifierService.getItemModel(DefaultUniqueItemIdentifierService.java:111)。 platform.cmswebservices.interceptor.CatalogVersionPermissionInterceptor.preHandle(CatalogVersionPermissionInterceptor.java:62)

我们从SAP Commerce v6.5开始使用smartedit

(37.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


使用高级编辑时-在嵌套编辑器弹出窗口中发生错误。

弹出窗口显示嵌套的组件-但每个嵌套的组件都有一个错误替代文本

控制台也显示2个错误请求。 替代文字

在处理嵌套组件之前,似乎目录版本已丢失。

控制台日志中的错误是:INFO [hybrisHTTP31] [RestHandlerExceptionResolver]翻译异常[java.lang.IllegalArgumentException]:catalogVersion不能为null或为空ERROR [hybrisHTTP31] [RestHandlerExceptionResolver] java.lang.IllegalArgumentException:catalogVersion不得为 位于de.hybris.platform.cms2.servicelayer.daos.impl.DefaultCMSItemDao.findByUid(DefaultCMSItemDao.java:54)处com.google.common.base.Preconditions.checkArgument(Preconditions.java:122)处的null或空白。 hybris.platform.cms2.servicelayer.services.admin.impl.DefaultCMSAdminItemService.findByUid(DefaultCMSAdminItemService.java:50)位于de.hybris.platform.cms2.servicelayer.services.admin.impl.DefaultCMSAdminItemService.findByUid(DefaultCMSAdminItemService.java:69) )的de.hybris.platform.cmsfacades.uniqueidentifier.functions.DefaultCmsItemModelUniqueIdentifierConverter.convert(DefaultCmsItemModelUniqueIdentifierConverter.java:96)的de.hybris.platform.cmsfacades.uniqueidentifier.functions.Def aultCmsItemModelModelUniqueIdentifierConverter.convert(DefaultCmsItemModelUniqueIdentifierConverter.java:1)at de.hybris.platform.cmsfacades.uniqueidentifier.impl.DefaultUniqueItemIdentifierService.lambda $ 4(DefaultUniqueItemIdentifierService.java:112)at java.util.Optionalmap(可选)。 de.hybris.plats.cmsfacades.uniqueidentifier.impl.DefaultUniqueItemIdentifierService.getItemModel(DefaultUniqueItemI155)上的de.hybris.platform.cmsfacades.uniqueidentifier.impl.DefaultUniqueItemIdentifierService.getItemModel(DefaultUniqueItemIdentifierService.java:111)。 platform.cmswebservices.interceptor.CatalogVersionPermissionInterceptor.preHandle(CatalogVersionPermissionInterceptor.java:62)

我们从SAP Commerce v6.5开始使用smartedit

(37.2 kB)
付费偷看设置
发送
6条回答
亦是此间程序员
1楼-- · 2020-08-19 19:25

史蒂夫你好,

我希望你做得很好。 不幸的是,SmartEdit仅在6.6版上增加了对嵌套组件的支持。 因此,您遇到的错误很可能不是由于目录版本丢失,而是由于SmartEdit不知道如何处理该组件列表。

CPLASF-自律
2楼-- · 2020-08-19 19:35

它通过删除"一部分"属性来解决。

SAP小菜
3楼-- · 2020-08-19 19:36

你好,亚历杭德罗,

我们正在使用SAP Commerce 1811.1,并且嵌套组件存在相同的问题。 解决同一问题的任何可能的解决方案/建议。

:您能够解决nestedcomponent问题吗? 此致Pradeep

半个程序猿
4楼-- · 2020-08-19 19:38

嗨Łukasz,

使用这种方法是否可以消除错误? 我尝试删除逻辑语句的一半:

 @Override
     公共布尔测试(最终AttributeDescriptorModel attributeDescriptor)
     {
         返回getNestedAttributePredicates()。stream()。anyMatch(predicate-> predicate.test(attributeDescriptor));
     } 

但是现在SmartEdit在访问任何页面时都会引发大量错误:

错误[hybrisHTTP29] [RestHandlerExceptionResolver] java.lang.NullPointerException
 在de.hybris.platform.cmsfacades.cmsitems.converter.DefaultCMSItemConverter.lambda $ 14(DefaultCMSItemConverter.java:572)
 在de.hybris.platform.cmsfacades.cmsitems.attributeconverters.CollectionToRepresentationConverter.lambda $ 0(CollectionToRepresentationConverter.java:63)
 在java.util.ArrayList $ Itr.forEachRemaining(ArrayList.java:899)
 在java.util.Collections $ UnmodifiableCollection $ 1.forEachRemaining(Collections.java:1051)
 在de.hybris.platform.cmsfacades.cmsitems.attributeconverters.CollectionToRepresentationConverter.convert(CollectionToRepresentationConverter.java:59)
 在de.hybris.platform.cmsfacades.cmsitems.converter.DefaultAttributeValueToRepresentationStrategy.lambda $ 1(DefaultAttributeValueToRepresentationStrategy.java:69)处
 在de.hybris.platform.cms2.common.functions.impl.Functions.lambda $ 0(Functions.java:43)
 在de.hybris.platform.cms2.common.functions.ChainFunction.lambda $ 0(ChainFunction.java:43)
 在de.hybris.platform.cms2.common.functions.ChainFunction.lambda $ 0(ChainFunction.java:38)
 在de.hybris.platform.cmsfacades.cmsitems.converter.DefaultCMSItemConverter.lambda $ 18(DefaultCMSItemConverter.java:719)

对于上下文,我使用的是v1811。

最好

Jos

hongfeng1314
5楼-- · 2020-08-19 19:32

嗨,

我之前也遇到过类似的问题,好像智能编辑没有按照该API上强制属性的cmswebservice API进行适当的前端验证,因此在前端,我们没有进行正确的表单字段验证。

在尝试提交请求以更新组件时,"目录版本"字段将传递为null或空。

要了解更多信息,请从浏览器控制台检查请求Json,或尝试通过Postman或任何其他开放客户端访问该服务,以更好地了解这一点。

我希望这会有所帮助,请及时更新。

谢谢

Aaron 3364
6楼-- · 2020-08-19 19:46

大家好,

我认为最好的解决方法是从下面的类中删除attributeDescriptor.getPartOf():

公共类NestedOrPartOfAttributePredicate实现Predicate 
 {
     @Override
     公共布尔测试(最终AttributeDescriptorModel attributeDescriptor)
     {
         返回attributeDescriptor.getPartOf()||  getNestedAttributePredicates()。stream()。anyMatch(predicate-> predicate.test(attributeDescriptor));
     }

   ....

 } 

最诚挚的问候,

Łukasz

一周热门 更多>