跳转到内容
技术文章
作者资料照片Shr万博新体育手机客户端eshtt Bhatt

SAP Commerce |启用SmartEdit中布尔字段的默认值

简介

通用编辑器控件中编辑组件SmartEdit接口。OOTB SmartEdit不支持在创建新组件时显示defaultValue。

但OOTBBooleanComponent(AngularJS)有处理默认值的能力,并期望从CMS结构API得到以下JSON响应

{cmsStructureType:“Boolean”,限定符:“someQualifier”,i18nKey:“i18nkeyForSomeQualifier”,本地化:false, defaultValue: true}

在这里,我们可以看到这个BooleanComponent也接受defaultValue,并可以相应地显示切换按钮ON/OFF。

本博客将基于SAP Commerce 1811。

问题

一些CMS组件的布尔类型字段有默认值true/false(在items.xml中定义),但无论何时我们在SmartEdit中创建这些CMS组件,我们都不能看到切换按钮ON/OFF根据它们的defaultValue。

例如,所有CMS组件都有可见的布尔字段,默认为True,但在SmartEdit中,每当我们创建任何组件时,我们都不能看到默认的可见开关ON。

虽然BooleanComponent支持defaultValue,但OOTBCMS结构API没有定义defaultValue字段。

我们可以通过扩展来修改它的元数据ComponentTypeAttributeData带有defaultValue的DTO。

定制

自定义可以在任何扩展中完成,但我建议创建一个自定义的SmartEdit扩展,并将所有类型的SmartEdit自定义放在该扩展中。

  • 让我们首先创建一个自定义的SmartEdit扩展。请按照这些链接设置和创建一个自定义扩展。trainingsmartedit。

https://help.sap.com/viewer/9d346683b0084da2938be8a285c0c27a/1811/en-US/0955af7dd5154a8db28dfce327d8dae5.html

https://help.sap.com/viewer/9d346683b0084da2938be8a285c0c27a/1811/en-US/6d55d5fba206425b9acecda9f2311483.html

https://help.sap.com/viewer/9d346683b0084da2938be8a285c0c27a/1905/en-US/5fd2da27ae50410592b4a8d04af1a02f.html

  • 扩展CMS结构API。打开trainingsmartedit-beans.xml,用defaultValue扩展ComponentTypeAttributeData
< bean类= " de.hybris.platform.cmsfacades.data。ComponentTypeAttributeData">  
  • 由于我们仅为布尔类型添加了defaultValue,因此需要定义一个谓词,该谓词将允许仅为布尔类型字段填充其值。
  • 创建BooleanDefaultValueStructureTypeAttributePredicate在trainingsmartedit -> SRC文件夹下的相关包。这将确保当属性有默认值并且它是布尔类型时,只在结构API中填充defaultValue。
公共类BooleanDefaultValueStructureTypeAttributePredicate实现Predicate{@覆盖公共布尔测试(最终的AttributeDescriptorModel attributeDescriptor) {return attributeDescriptor. getdefaultvalue () != null && attributeDescriptor. getdefaultvalue()实例布尔;}}
  • 创建填充器BooleanDefaultValueComponentTypeAttributePopulator在ComponentTypeAttributeData中填充defaultValue
公共类BooleanDefaultValueComponentTypeAttributePopulator实现Populator{@覆盖公共void populate(最终的AttributeDescriptorModel源,最终的ComponentTypeAttributeData目标)抛出ConversionException {if (source. getdefaultvalue()实例布尔){target. setdefaultvalue((布尔)source. getdefaultvalue ());}}}
  • 将这个填充器添加到cmsAttributePredicatePopulatorListMap中。打开trainingsmartedit-sprint.xml并添加下面的bean定义
          
  • 最后,我们需要扩展来自OCC端的ComponentTypeAttributeData。如果我们没有自定义的occ扩展,我们可以将它添加到trainingsmartedit-beans.xml。
< bean类= " de.hybris.platform.cmswebservices.data。ComponentTypeAttributeData">     
  • OCC字段级映射已经在cmswebservices/web/webroot/ web - inf /config/ to- Mapping -spring.xml中定义了OOTB
  <属性名="levelMapping">       

构建步骤

做所有和服务器启动。一旦服务器启动,我们可以通过添加任何CMS组件来检入SmartEdit, defaultValue应该在CMS结构API中填充布尔类型字段,其余的布尔组件将完成他们的工作。

{"cmsStructureType": "Boolean", "collection": false, "defaultValue": true, "可编辑":true, "i18nKey": "type.abstractcmscomponent.visible.name", " localization ": false, " pagaged ": false, "qualifier": "visible", "required": false}

结论

这也是我们处理其他类型字段的方法,但是对于其他类型,我们需要扩展angular组件的默认值功能。

指定的标签

      第一个留下评论
      你一定是登录评论:评论或回复一篇文章