可以为 ClassData 和 ClassWsDTO 自定义映射器 - Hybris - YCommerceWebServices
It's possible to custom the mapper for ClassData and ClassWsDTO - Hybris - YCommerceWebServices
我的数据中有一个对象 class,我只想要 WsDTO 中此对象的特定属性 class。
自定义 B2BUnitData 的声明
<bean class="de.hybris.platform.b2bcommercefacades.company.data.B2BUnitData">
<property name="PointOfServiceData"
type="de.hybris.platform.commercefacades.storelocator.data.PointOfServiceData"/>
</bean>
B2bUnitWsDTO 声明
<bean class="de.hybris.platform.b2boccaddon.dto.b2bunit.B2bUnitWsDTO">
<property name="PointOfServiceData" type="PointOfServiceWsDTO" />
</bean>
文件:dto-level-mappings-v2-spring.xml
<bean parent="fieldSetLevelMapping" id="b2bunitWsDTOFieldSetLevelMapping">
<property name="dtoClass"
value="de.hybris.platform.b2boccaddon.dto.pricerow.B2bUnitWsDTO"/>
<property name="levelMapping">
<map>
<entry key="FULL" value="PointOfServiceData" />
</map>
</property>
</bean>
此实现为我提供了所有对象 pointOfService,但我只想要 B2bUnitWsDTO 中的 UID 属性
我知道的唯一解决方案是在数据中创建一个 PointOfServiceUID 属性并将其直接映射到 b2bunitWsDTOFieldSetLevelMapping bean。
我想知道是否可以在 dto-level-mappings-v2-spring.xml 中只映射我对象的一个属性:
例子:
或者如果存在一些解决方案可以做到这一点
正如您已经提到的,您可以更改 dto-level-mappings-v2-spring.xml
,以便对于所有级别(BASIC
、DEFAULT
、FULL
)仅返回 uid。
<bean parent="fieldSetLevelMapping" id="b2bunitWsDTOFieldSetLevelMapping">
<property name="dtoClass"
value="de.hybris.platform.b2boccaddon.dto.pricerow.B2bUnitWsDTO"/>
<property name="levelMapping">
<map>
<entry key="BASIC" value="PointOfServiceData(uid)" />
<entry key="DEFAULT" value="PointOfServiceData(uid)" />
<entry key="FULL" value="PointOfServiceData(uid)" />
</map>
</property>
</bean>
注意,fieldSetLevelMapping
bean 只定义你的响应的样子!
如果您想更改 B2BUnitData
映射到 B2bUnitWsDTO
的方式,您必须定义自定义字段映射器(您可以在 dto-mappings-v2-spring.xml
中找到示例)
假设你的 B2bUnitWsDTO
现在只有 pointOfServiceUID
作为 属性,这可能看起来像这样(免责声明:你需要测试这个):
<bean id="b2bUnitFieldMapper" parent="fieldMapper">
<property name="sourceClass"
value="de.hybris.platform.b2bcommercefacades.company.data.B2BUnitData"/>
<property name="destClass"
value="com.customer.some.package.B2bUnitWsDTO"/>
<property name="fieldMapping">
<map>
<entry key="PointOfServiceData.uid" value="pointOfServiceUID"/>
</map>
</property>
</bean>
这是关于字段映射和字段级别定义的一个很好的文档入口点:
https://help.hybris.com/1808/hcd/8c404c5886691014a48c88f4a49f9bf3.html
我的数据中有一个对象 class,我只想要 WsDTO 中此对象的特定属性 class。
自定义 B2BUnitData 的声明
<bean class="de.hybris.platform.b2bcommercefacades.company.data.B2BUnitData">
<property name="PointOfServiceData"
type="de.hybris.platform.commercefacades.storelocator.data.PointOfServiceData"/>
</bean>
B2bUnitWsDTO 声明
<bean class="de.hybris.platform.b2boccaddon.dto.b2bunit.B2bUnitWsDTO">
<property name="PointOfServiceData" type="PointOfServiceWsDTO" />
</bean>
文件:dto-level-mappings-v2-spring.xml
<bean parent="fieldSetLevelMapping" id="b2bunitWsDTOFieldSetLevelMapping">
<property name="dtoClass"
value="de.hybris.platform.b2boccaddon.dto.pricerow.B2bUnitWsDTO"/>
<property name="levelMapping">
<map>
<entry key="FULL" value="PointOfServiceData" />
</map>
</property>
</bean>
此实现为我提供了所有对象 pointOfService,但我只想要 B2bUnitWsDTO 中的 UID 属性
我知道的唯一解决方案是在数据中创建一个 PointOfServiceUID 属性并将其直接映射到 b2bunitWsDTOFieldSetLevelMapping bean。
我想知道是否可以在 dto-level-mappings-v2-spring.xml 中只映射我对象的一个属性:
例子:
或者如果存在一些解决方案可以做到这一点
正如您已经提到的,您可以更改 dto-level-mappings-v2-spring.xml
,以便对于所有级别(BASIC
、DEFAULT
、FULL
)仅返回 uid。
<bean parent="fieldSetLevelMapping" id="b2bunitWsDTOFieldSetLevelMapping">
<property name="dtoClass"
value="de.hybris.platform.b2boccaddon.dto.pricerow.B2bUnitWsDTO"/>
<property name="levelMapping">
<map>
<entry key="BASIC" value="PointOfServiceData(uid)" />
<entry key="DEFAULT" value="PointOfServiceData(uid)" />
<entry key="FULL" value="PointOfServiceData(uid)" />
</map>
</property>
</bean>
注意,fieldSetLevelMapping
bean 只定义你的响应的样子!
如果您想更改 B2BUnitData
映射到 B2bUnitWsDTO
的方式,您必须定义自定义字段映射器(您可以在 dto-mappings-v2-spring.xml
中找到示例)
假设你的 B2bUnitWsDTO
现在只有 pointOfServiceUID
作为 属性,这可能看起来像这样(免责声明:你需要测试这个):
<bean id="b2bUnitFieldMapper" parent="fieldMapper">
<property name="sourceClass"
value="de.hybris.platform.b2bcommercefacades.company.data.B2BUnitData"/>
<property name="destClass"
value="com.customer.some.package.B2bUnitWsDTO"/>
<property name="fieldMapping">
<map>
<entry key="PointOfServiceData.uid" value="pointOfServiceUID"/>
</map>
</property>
</bean>
这是关于字段映射和字段级别定义的一个很好的文档入口点: https://help.hybris.com/1808/hcd/8c404c5886691014a48c88f4a49f9bf3.html