You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止SAP Hybris Backoffice编辑器弹窗保存后自动关闭

SAP Hybris Backoffice:ExtendedMultiReferenceEditor保存后保持弹窗打开的实现方案

问题场景

在User类型的userGroups属性中配置了com.hybris.cockpitng.editor.extendedmultireferenceeditor编辑器,双击打开弹窗修改用户组后,点击「保存」按钮弹窗会自动关闭(这是Backoffice的标准行为)。需求是点击「保存」后弹窗保持打开状态,仅通过弹窗右上角的「X」关闭按钮来关闭弹窗。

解决方案

方式一:通过编辑器参数直接配置

ExtendedMultiReferenceEditor支持通过editorArea参数控制弹窗保存后的行为,你可以在对应的items.xml或Backoffice的编辑器区域配置中,给userGroups属性添加popupCloseAfterSave参数并设置为false:

<property qualifier="userGroups">
    <editor:editor qualifier="com.hybris.cockpitng.editor.extendedmultireferenceeditor">
        <editor:parameter>
            <editor:name>popupCloseAfterSave</editor:name>
            <editor:value>false</editor:value>
        </editor:parameter>
    </editor:editor>
</property>

这个参数是Backoffice针对弹窗类编辑器提供的通用控制项,用于指定保存操作完成后是否自动关闭弹窗。

方式二:自定义编辑器扩展(参数配置无效时)

如果上述参数在你的Hybris版本中不生效,可以通过继承原编辑器并重写逻辑实现需求:

  1. 继承ExtendedMultiReferenceEditor类,重写保存后的处理逻辑,拦截自动关闭弹窗的事件:
public class CustomExtendedMultiReferenceEditor extends ExtendedMultiReferenceEditor {
    @Override
    protected void onSave(AbstractEditorContext editorContext, Object newValue) {
        super.onSave(editorContext, newValue);
        // 调用父类保存逻辑后,取消关闭弹窗的事件
        getWidgetInstanceManager().cancelEvent(EditorUIEvents.EDITOR_CLOSE_POPUP, this);
    }
}
  1. 在cockpitng-spring.xml中注册自定义编辑器:
<bean id="customExtendedMultiReferenceEditor" class="com.yourproject.backoffice.editor.CustomExtendedMultiReferenceEditor" scope="prototype">
    <property name="widgetInstanceManager" ref="widgetInstanceManager"/>
</bean>
  1. 在配置文件中替换原编辑器为自定义类:
<property qualifier="userGroups">
    <editor:editor qualifier="com.yourproject.backoffice.editor.CustomExtendedMultiReferenceEditor"/>
</property>

内容的提问来源于stack exchange,提问作者experc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:18:24