如何阻止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版本中不生效,可以通过继承原编辑器并重写逻辑实现需求:
- 继承
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); } }
- 在
cockpitng-spring.xml中注册自定义编辑器:
<bean id="customExtendedMultiReferenceEditor" class="com.yourproject.backoffice.editor.CustomExtendedMultiReferenceEditor" scope="prototype"> <property name="widgetInstanceManager" ref="widgetInstanceManager"/> </bean>
- 在配置文件中替换原编辑器为自定义类:
<property qualifier="userGroups"> <editor:editor qualifier="com.yourproject.backoffice.editor.CustomExtendedMultiReferenceEditor"/> </property>
内容的提问来源于stack exchange,提问作者experc
相关产品推荐
相关产品推荐

