customization - 关于 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],因为没有为其生成属性。
解决方案
正如@Farrukh Chishti 评论的那样,您使用的 URL 可能使用了 DEFAULT 级别,其中不包含您添加的属性。出于测试目的,您可以尝试将属性添加到 BASIC、DEFAULT 和 FULL。
在 URL 中,您可以指定级别,如下所示:
https://localhost:9002/rest/v2/custom_site/stores?&fields=FULL
推荐阅读
- ruby-on-rails - Rails 5 处理 ActionController::ParameterMissing 的方法
- swagger - 在 Swagger 上更改响应类型
- bash - FFMPEG批量转换,然后创建文件夹
- r - 在带有矢量元素的小标题上使用 dplyr 时出现问题 [列出列]
- django - DRF Viewset 删除详细路线的权限
- android - 为 Android 重新生成 ICU 的 .dat 文件
- c++ - 已弃用的隐式声明的复制构造函数
- twitter - 带有标签的 Twitter 搜索 API 查询返回“无法验证您”、“代码”:32
- android - 如何为 TextInputLayout Edittext 提供填充
- scala - 在scala中实现一个通用的半群实现