如何将一个实体的字段显示到另一个实体中

How show a field of an entity into another entity

我有一个关于 SAP Hybris 后台的问题-config.xml,我创建了一个名为 LockerOpenEvent 的新实体,它有四个属性,我添加了一个列表视图、高级搜索和编辑器区域,现在我的问题是编辑区。问题是另一个实体(储物柜)的两个字段没有显示到编辑器区域,但同一字段在列表视图中可见,问题是什么?我 post 将错误写入日志和感兴趣的代码标签:

打开新实体时的错误日志(但进入列表视图时出现两列):

 WARN  [hybrisHTTP25] [DataType] Qualifier [Locker] not found. Case insenitive resolution have found matching qualifier [locker]

打开编辑区时出现可视化问题的错误日志:

ERROR [hybrisHTTP36] [DefaultEditorAreaSectionRenderer] Property Locker.code was not found for type LockerOpenEvent

我的后台扩展-config.xml

<context type="LockerOpenEvent">
    <context merge-by="type" component="listview" >
        <list-view:list-view
                xmlns:list-view="http://www.hybris.com/cockpitng/component/listView"
                refresh-after-object-creation="true">
            <list-view:column qualifier="Locker.code" width="200px" />
            <list-view:column qualifier="Locker.name" width="200px" />
            <list-view:column qualifier="timestamp" width="200px" />
            <list-view:column qualifier="user" width="200px" />
            <list-view:column qualifier="drawerCode" width="200px"  />
        </list-view:list-view>
    </context>

<context merge-by="type"  component="editor-area" parent="GenericItem">
        <editorArea:editorArea xmlns:editorArea="http://www.hybris.com/cockpitng/component/editorArea">
            <editorArea:tab name="hmc.tab.general" >
                <editorArea:section name="" >
                    <editorArea:attribute qualifier="user"/>
                    <editorArea:attribute qualifier="Locker.code"   />
                    <editorArea:attribute qualifier="Locker.name"  />
                    <editorArea:attribute qualifier="drawerCode" />
                    <editorArea:attribute qualifier="lockerDrawerOpeningEnum" editor="com.hybris.cockpitng.editor.nonoptionalenum" />
                </editorArea:section>
            </editorArea:tab>
        </editorArea:editorArea>
    </context>
</context>

非常感谢。

您在列表视图部分收到的 警告 是因为 属性 是小写的。 Commerce 对小写版本进行回退搜索,这就是为什么您会在列表页面中获得结果的原因。要摆脱这个警告,你需要用小写字母写属性。

<list-view:column qualifier="locker.code" width="200px" />
<list-view:column qualifier="locker.name" width="200px" />

对于编辑区,情况就不同了。 Commerce 不支持 开箱即用的嵌套。您需要添加

<editorArea:attribute qualifier="locker" />

而不是 Locker.codeLocker.name 在后台,这将向您显示储物柜对象。然后用户可以导航到储物柜对象并在那里执行更改。 (您的编辑器区域配置中也缺少类型,不确定是否是故意的)

如果你真的想要 show/edit LockerOpenEvent 上的属性,你将需要创建一个 动态属性 ,并编写代码以便 getter 和 setter 操作链接的 Locker 对象