我可以在Hybris中显示带有图库图像的参考产品吗?

我可以在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,

我可以在hybris中显示带有图库图像的参考产品吗

我试图从控制器中检索图像,但jsp页面中的值始终为空

@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&lt;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>