首页 > 解决方案 > 关于 hybris 产品数据的 Hybris Custom WSDTO

问题描述

嗨,我在 commerecefacades-beans.xml 中创建了 eProductForm bean,我添加了 ProductData 的自定义属性。

<bean class="de.hybris.platform.commercefacades.product.data.ProductData">
<property name="eProductForm" type="String"/>    
</bean>

然后在 commercewebservice-beans.xml 中,我添加了 ProductWsDTO 的自定义属性

<bean class="de.hybris.platform.commercewebservicescommons.dto.product.ProductWsDTO">
<property name="eProductForm" type="String"/></bean>

从 SearchResultProductPopulator 从我的搜索结果中填充 eProductForm 的产品数据。

target.setEProductForm(this.<String> getValue(source, "E_PRODUCT_FORM"));

PFB dto 映射

<bean parent="fieldSetLevelMapping" id="productWsDTOFieldSetLevelMapping">
 <property name="dtoClass"   value="de.hybris.platform.commercewebservicescommons.dto.product.ProductWsDTO"/>
<property name="levelMapping">
<map>
<entry key="BASIC"
      value="purchasable,stock,name,baseProduct,availableForPickup,code,url,price"/>
<entry key="DEFAULT"
      value="summary,averageRating,purchasable,stock(DEFAULT),description,variantMatrix(DEFAULT),name,baseOptions(DEFAULT),baseProduct,availableForPickup,variantOptions(DEFAULT),code,url,price(DEFAULT),numberOfReviews,manufacturer,categories(BASIC),priceRange,multidimensional,configuratorType,configurable,tags"/>
<entry key="FULL"
      value="summary,productReferences(FULL),classifications(FULL),averageRating,purchasable,volumePrices(FULL),variantType,stock(FULL),description,variantMatrix(FULL),name,baseOptions(FULL),baseProduct,availableForPickup,variantOptions(FULL),reviews(FULL),code,url,price(FULL),numberOfReviews,manufacturer,volumePricesFlag,futureStocks(FULL),images(FULL),categories(FULL),potentialPromotions(FULL),priceRange,multidimensional,configuratorType,configurable,tags,eProductForm,ePickledGroup"/>
</map>
</property>
</bean>

下面是我调用 Mapper 的代码。当我调试我的代码源结果时,我得到了该自定义属性的产品数据。但我没有在 WSDTO 响应中得到 eproductform。

final ProductSearchPageData<SearchStateData, ProductData> sourceResult = searchProducts(query, currentPage, pageSize, sort);
    if (sourceResult instanceof ProductCategorySearchPageData)
    {
        return getDataMapper().map(sourceResult, ProductCategorySearchPageWsDTO.class, fields);
    }

但在日志中我看到:

[EL 警告]:2019-02-20 18:31:27.341--忽略类 [de.hybris.platform.commercewebservicescommons.dto.product.ProductWsDTO] 上的属性 [eProductForm],因为没有为其生成属性。

标签: customizationhybris

解决方案


正如@Farrukh Chishti 评论的那样,您使用的 URL 可能使用了 DEFAULT 级别,其中不包含您添加的属性。出于测试目的,您可以尝试将属性添加到 BASIC、DEFAULT 和 FULL。

在 URL 中,您可以指定级别,如下所示:

https://localhost:9002/rest/v2/custom_site/stores?&fields=FULL


推荐阅读