Hybris Custom WSDTO上的Hybris产品数据

时间:2019-02-20 13:03:30

标签: customization hybris

您好,我在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的代码。在调试代码时,sourceresult的结果是具有该自定义属性的产品数据。但是我没有在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-忽略属性   [eProductForm]上课   [de.hybris.platform.commercewebservicescommons.dto.product.ProductWsDTO]   因为没有为其生成属性。

1 个答案:

答案 0 :(得分:1)

正如@Farrukh Chishti所评论的那样,您使用的URL可能使用了DEFAULT级别,该级别不包含您添加的属性。为了进行测试,您可以尝试将属性添加到BASIC,DEFAULT和FULL。

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

  

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