WCMSCockpit中的地图类型

2020-09-16 02:07发布

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

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


您好,我必须为我的自定义CMSComponent实现编辑功能,一切正常,除了一件事-它包含maptype属性(Map )。


  
          
   
  

  
              
                   <属性>
                    -属性清单-
                    
  
  
                  
                  <属性>
                      
                          <修饰符read =" true" write =" true"可选=" true"/>
                          
                      
                      
                          <修饰符read =" true" write =" true"可选=" true"/>
                          
                      
                      -为简单起见,省略了其他属性-
                  
  

  

我已在Defaultstrong.cmscockpit-editors.xml

中为DefaultPropertyEditorDescriptor的编辑器地图添加了DefaultMapEditorRenderer,该编辑器类型为REFERENCE。
  
      
      
      
      
          <地图>
              <!-
                  由于CarouselConfigsMap而添加此编辑器
              ->
              << entry key =" mapEditor" value =" com.hybris.cockpitng.editor.defaultmap.DefaultMapEditorRenderer"/>
              -为简单起见,省略了其他编辑-
          
      
      
  
  

并将其作为editorCode =" mapEditor"添加到contentEditor.xml


  <?xml version =" 1.0" encoding =" UTF-8"?>
  
      <模板>
          <![CDATA [
          
              <身体>
                  
<座舱代码=" property" value =" TopBrandsComponent.displayingConfigurations"/>
]]> <自定义编辑者>

当我尝试在WCMSCockpit中编辑此组件时,出现错误:

[Thread-62] [DefaultPropertyEditorDescriptor]无法为类型REFERENCE和模式" mapEditor"创建编辑器组件。

有人知道如何在WCMSCockpit中处理Maptype的编辑过程吗?

混合版本:5.7

非常感谢您的任何建议。

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

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


您好,我必须为我的自定义CMSComponent实现编辑功能,一切正常,除了一件事-它包含maptype属性(Map )。


  
          
   
  

  
              
                   <属性>
                    -属性清单-
                    
  
  
                  
                  <属性>
                      
                          <修饰符read =" true" write =" true"可选=" true"/>
                          
                      
                      
                          <修饰符read =" true" write =" true"可选=" true"/>
                          
                      
                      -为简单起见,省略了其他属性-
                  
  

  

我已在Defaultstrong.cmscockpit-editors.xml

中为DefaultPropertyEditorDescriptor的编辑器地图添加了DefaultMapEditorRenderer,该编辑器类型为REFERENCE。
  
      
      
      
      
          <地图>
              <!-
                  由于CarouselConfigsMap而添加此编辑器
              ->
              << entry key =" mapEditor" value =" com.hybris.cockpitng.editor.defaultmap.DefaultMapEditorRenderer"/>
              -为简单起见,省略了其他编辑-
          
      
      
  
  

并将其作为editorCode =" mapEditor"添加到contentEditor.xml


  <?xml version =" 1.0" encoding =" UTF-8"?>
  
      <模板>
          <![CDATA [
          
              <身体>
                  
<座舱代码=" property" value =" TopBrandsComponent.displayingConfigurations"/>
]]> <自定义编辑者>

当我尝试在WCMSCockpit中编辑此组件时,出现错误:

[Thread-62] [DefaultPropertyEditorDescriptor]无法为类型REFERENCE和模式" mapEditor"创建编辑器组件。

有人知道如何在WCMSCockpit中处理Maptype的编辑过程吗?

混合版本:5.7

非常感谢您的任何建议。

付费偷看设置
发送
2条回答
DafaDDDa
1楼-- · 2020-09-16 03:04

你好

我怀疑您尝试将两个不同的模块相互结合。
WCMS座舱是旧的解决方案。 CokcpitNG是用于backoffie应用程序的新框架。

您已在旧座舱中添加了cockpitng渲染器(不允许)

  

  

也许您打算将其映射到 de.hybris.platform.cockpit.model.editor.impl.MapUIEditor

欢呼

暮风yp
2楼-- · 2020-09-16 03:06

嗨,谢谢您的回复! 你是对的! 当我将com.hybris.cockpitng.editor.defaultmap.DefaultMapEditorRenderer更改为de.hybris.platform.cockpit.model.editor.impl.MapUIEditor时,出现错误:

java.lang.IllegalArgumentException:初始值'CarouselDisplayingConfigModel(8796322446997)'不是类型化的对象。

在de.hybris.platform.cockpit.model.editor.impl.MapUIEditorRowRenderer.render(MapUIEditorRowRenderer.render(MapUIEditorRowRenderer.render(MapUIEditorRowRenderer.render(MapUIEditorRowRenderer.render))上的

.java:116),位于org.zkoss.zul.Listbox $ Renderer.render(Listbox.java:2336)

因此,我决定将CarouselDisplayingConfigModel(从SimpleCMSComponent扩展)包装到TypedObject。 通过从MapUIEditor扩展并覆盖其方法:

  @Override
      公共HtmlBasedComponent createViewComponent(Object initialValue,Map 参数,EditorListener侦听器){
          Map 包装的项目=新的LinkedHashMap <>();
          如果(地图的InitialValue实例){
              映射 tempMap = new LinkedHashMap <>((Map)initialValue);
              对于(Map.Entry 条目:tempMap.entrySet()){
                  wrapItems.put(entry.getKey(),wrapValue(entry.getValue()));
              }
          }
          返回super.createViewComponent(wrappedItems,参数,侦听器);
      }

      私人TypedObject wrapValue(CarouselDisplayingConfigModel值){
          返回UISessionUtils.getCurrentSession()。getTypeService()。wrapItem(value);
      }
  

最后它出现在cmscockpit。 哇!

但是...令我失望的是,我无法通过此编辑器编辑Map值,因为它会抛出NPE 替代文字

java.lang.NullPointerException

at de.hybris.cockpit.model.referenceeditor.simple.SimpleReferenceSelector.showReferenceSelectorModalDialog(SimpleReferenceSelector.java:754)at de.hybris.cockpit.model.referenceeditor.simple.SimpleReferenceSelector.updateMode(SimpleReferenceSelector.java :185),位于de.hybris.platform.cockpit.model.referenceeditor.simple.impl.DefaultSimpleReferenceSelectorModelListener.javaChanged(DefaultSimpleReferenceSelectorModelListener.java:57),位于de.hybris.cockpit.model.referenceeditor.simple.AbstractSimpleSelectorModel.fireModeChanged(AbstractSimpleSelector .java:48),位于de.hybris.platform.cockpit.model.referenceeditor.simple.impl.DefaultSimpleReferenceSelectorModel.setMode(DefaultSimpleReferenceSelectorModel.java:215),位于de.hybris.cockpit.model.referenceeditor.simple.impl.DefaultSimpleReferenceSelectorListener .selectorAdvancedMode(DefaultSimpleReferenceSelectorListener.java:191)位于de.hybris.platform.cockpit.model.referenceeditor.simple.AbstractSimpleRefer enceSelector.fireSelectorAdvancedMode(AbstractSimpleReferenceSelector.java:71),位于de.hybris.platform.cockpit.model.referenceeditor.simple.SimpleReferenceSelector $ 7.onEvent(SimpleReferenceSelector.java:486)

一周热门 更多>