Hybris技术学习——backoffice组件间数据传输

组件间数据传输

  • 组件数据传输原理

组件数据传输原理

  1. 要发送参数的组件定义数据输出槽
    backoffice不同页面之间的数据传输是通过definition.xml文件中定义的sockets进行传输。input为参数输入,output为参数输出。例如下面的通用搜索组件定义:

<widget-definition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:noNamespaceSchemaLocation="http://www.hybris.com/schema/cockpitng/widget-definition.xsd"
	id="com.hep.backoffice.widgets.base.lov">
	<name>搜索name>
	<description>搜索description>
	<defaultTitle>搜索defaultTitle>
	<author>zhoubinauthor>
	<version>1.0version>
	<view src="lov.zul" />
	 <sockets>
		<output type="java.lang.Object" id="selectResult"/>
	sockets> 
	<keywords>
		<keyword>Hepbackoficekeyword>
	keywords>
	<controller class="com.hep.backoffice.widgets.widget.base.HepLovController" />
widget-definition>

  ]其中selectResult为输出socket,即要把参数发送到具体的槽点:

com.hybris.cockpitng.util.DefaultWidgetController.sendOutput(String id, Object data)

  其中id即为definition.xml中定义的输出槽selectResult,即把数据输出到指定的槽点。

  1. 接收参数的组件定义数据接收槽
    同样在接收参数的目标组件中要定义对应的input sockets用于接收参数:
	<sockets>
		<input type="java.lang.Object" id="param"/>
	sockets> 

  接受参数的目标组件接收参数主要通过定义@SocketEvent(socketId = “输入槽点”)注解在方法上进行参数的接收,方法参数即为要接收的参数。
示例:

    @SocketEvent(socketId = "param")
    public void getParam(final Object param){
    //业务代码
    }
  1. 连接输出组件与输入组件,并指定输出槽与输入槽
    最后还需要在{extname}-backoffice-widgets.xml中定义widget-connection将输出参数的组件和接收参数的组件,输出槽和接收槽连接起来即可:
 格式:	 <widget-connection sourceWidgetId="发送参数的组件" targetWidgetId="接收参数的组件Id" inputId="接受参数组件的接受数据的槽点" outputId="发送参数的组件中参数发送的槽点"/>
 示例:  <widget-connection sourceWidgetId="hepLov" targetWidgetId="hepEcCheck" inputId="paymentReturn" outputId="selectResult"/>
  1. 完成

你可能感兴趣的:(Hybris技术学习)