Hybris Custom WSDTO по данным о продукции Hybris - PullRequest
0 голосов
/ 20 февраля 2019

Привет! Я создал bean-компонент eProductForm в commerecefacades-beans.xml. Я добавил пользовательский атрибут 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 mapping

<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 имеет данные о продукте этого пользовательского атрибута.Но я не получаю форму eproductform в ответе WSDTO.

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

Но в журналах я вижу:

[EL Warning]: 2019-02-20 18:31:27.341 - Игнорирование атрибута [eProductForm] для класса [de.hybris.platform.commercewebservicescommons.dto.product.ProductWsDTO], так как для него не было создано никакого свойства.

1 Ответ

0 голосов
/ 20 февраля 2019

Как прокомментировал @Farrukh Chishti, используемый вами URL, вероятно, использовал уровень DEFAULT, который не содержит добавленного вами атрибута.В целях тестирования вы можете попытаться добавить атрибут в BASIC, DEFAULT и FULL.

В URL вы можете указать уровень, например, так:

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

...