我可以在Hybris中显示带有图库图像的参考产品吗?
我可以在hybris中显示带有图库图像的参考产品吗 我试图从控制器中检索图像,但jsp页面中的值始终为空我可以在Hybris中显示带有图库图像的参考产品吗?,hybris,Hybris,我可以在hybris中显示带有图库图像的参考产品吗 我试图从控制器中检索图像,但jsp页面中的值始终为空 @RequestMapping(value = PRODUCT_CODE_PATH_VARIABLE_PATTERN, method = RequestMethod.GET) public String productDetail(@PathVariable("productCode") final String productCode, final Model model,
@RequestMapping(value = PRODUCT_CODE_PATH_VARIABLE_PATTERN, method = RequestMethod.GET)
public String productDetail(@PathVariable("productCode") final String productCode, final Model model,
final HttpServletRequest request, final HttpServletResponse response) throws CMSItemNotFoundException,
UnsupportedEncodingException
{
final ProductModel productModel = productService.getProductForCode(productCode);
final String redirection = checkRequestUrl(request, response, productModelUrlResolver.resolve(productModel));
if (StringUtils.isNotEmpty(redirection))
{
return redirection;
}
updatePageTitle(productModel, model);
populateProductDetailForDisplay(productModel, model, request);
model.addAttribute(new ReviewForm());
final List<ProductReferenceData> productReferences = productFacade.getProductReferencesForCode(productCode,
Arrays.asList(ProductReferenceTypeEnum.SIMILAR, ProductReferenceTypeEnum.ACCESSORIES),
Arrays.asList(ProductOption.BASIC, ProductOption.PRICE, ProductOption.GALLERY), null);
try
{
for (int i = 0; i < productReferences.size(); i++)
{
final List<Map<String, ImageData>> imageDataList = getGalleryImages(productReferences.get(i).getTarget());
final List<ImageData> imdData = new ArrayList<ImageData>();
for (int j = 0; j < imageDataList.size(); j++)
{
final ImageData sgImage = imageDataList.get(j).get("product");
if (sgImage != null)
{
imdData.add(sgImage);
}
}
productReferences.get(i).setPreviewImages(imdData);
}
}
catch (final Exception e)
{
e.printStackTrace();
}
//model.addAttribute("imageDataList", imageDataList);
model.addAttribute("productReferences", productReferences);
model.addAttribute("pageType", PageType.PRODUCT.name());
final String metaKeywords = MetaSanitizerUtil.sanitizeKeywords(productModel.getKeywords());
final String metaDescription = MetaSanitizerUtil.sanitizeDescription(productModel.getDescription());
setUpMetaData(model, metaKeywords, metaDescription);
return getViewForPage(model);
}
@RequestMapping(value=PRODUCT\u code\u PATH\u VARIABLE\u PATTERN,method=RequestMethod.GET)
公共字符串productDetail(@PathVariable(“productCode”)最终字符串productCode,最终模型模型,
最终HttpServletRequest请求,最终HttpServletResponse响应)引发CMSItemNotFoundException,
不支持的编码异常
{
最终产品模型ProductModel=productService.getProductForCode(产品代码);
最终字符串重定向=checkRequestUrl(请求、响应、productModelUrlResolver.resolve(productModel));
if(StringUtils.isNotEmpty(重定向))
{
返回重定向;
}
UpdatePagetTitle(产品模型、模型);
为显示(productModel、model、request)填充ProductDetails;
addAttribute(新的ReviewForm());
最终列表productReferences=productFacade.getProductReferencesForCode(productCode,
Arrays.asList(ProductReferenceTypeEnum.similor,ProductReferenceTypeEnum.ACCESSORIES),
Arrays.asList(ProductOption.BASIC、ProductOption.PRICE、ProductOption.GALLERY)为空;
尝试
{
对于(int i=0;i
我扩展了ProductReference数据类并添加了一个新属性
<bean
class="de.hybris.platform.commercefacades.product.data.ProductReferenceData">
<property name="previewImages"
type="java.util.List<de.hybris.platform.commercefacades.product.data.ImageData>" />
</bean>
最后在jsp页面中,我尝试显示它
<section class="featured-products">
<h4>${component.title}</h4>
<div class="features-product-block">
<div class="features-product carousel jcarousel-skin">
<c:forEach end="${component.maximumNumberProducts}"
items="${productReferences}" var="productReference">
<c:url value="${productReference.target.url}/quickView"
var="productQuickViewUrl" />
<div class="items">
<div class="each-product">
<div id="featuredprimaryPhoto" class="detailsPhotoWrap">
<a href="${productQuickViewUrl}" class="popup scrollerProduct">
<div class="thumb">
<product:productPrimaryImage
product="${productReference.target}" format="product" />
</div>
<h5>
<c:if test="${component.displayProductTitles}">
<span>${productReference.target.name}</span>
</c:if>
</h5> <c:if test="${component.displayProductPrices}">
<p>
<format:fromPrice
priceData="${productReference.target.price}" />
</p>
</c:if>
</a>
</div>
</div>
</div>
<div id="FeaturedShowcase">
<ul class="wtf">
<c:forEach items="${productReferences.previewImages}" var="previewImages"
varStatus="varStatus">
<li>Hello</li>
</c:forEach>
</ul>
</div>
</c:forEach>
</div>
</div>
</section>
${component.title}
- 你好
我总是遇到这样的例外
警告[hybrisHTTP12][DefaultCMSComponentRenderRegistry]处理组件标记时出错。currentComponent[ProductReferenceComponentModel(8796119335996)]异常:在第76行处理JSP页面/WEB-INF/views/desktop/cms/ProductReferenceComponent.JSP时发生异常
73: <ul class="wtf">
74:
75: <%-- <product:similarProductImagePanel similarProductImageList="${productReferences.previewImages}"/> --%>
76: <c:forEach items="${productReferences.previewImages}" var="previewImages"
77: varStatus="varStatus">
78: <li>Hello</li>
79: </c:forEach>
Stacktrace:
73:
74:
75:
76:
78:- 你好
79:
堆栈跟踪:
有关此问题的任何帮助或任何建议您之所以会收到此错误,是因为您使用的是
productReferences
(列表),而不是productReference
来获取预览图像
请换这个
<c:forEach items="${productReferences.previewImages}" var="previewImages" varStatus="varStatus">
<li>Hello</li>
</c:forEach>
你好
到
你好
我只是将productReferences
替换为productReference
。希望这能解决问题
<c:forEach items="${productReference.previewImages}" var="previewImages" varStatus="varStatus">
<li>Hello</li>
</c:forEach>