इसका उपयोग उत्पाद तुलना सुविधा के लिए किया जा रहा है। एक उत्पाद में उत्पाद कोड, नाम, छवि-यूआरएल, समीक्षाएं, मूल्य आदि जैसी विशेषताएं होती हैं। मेरे उत्पाद तुलना पैनल में प्रत्येक उत्पाद के लिए केवल कुछ विशेषताएं होंगी जिन्हें मैं सत्र में संग्रहीत करने की योजना बना रहा हूं। क्या यह jQuery का उपयोग करके किया जा सकता है? रणनीति क्या होनी चाहिए?


अद्यतन:

घटक नियंत्रक

@Override
    protected void fillModel(final HttpServletRequest request, final Model model,
            final ProductCompareComponentModel component)

final Cookie[] cookies = request.getCookies();
        String productList = null;
        boolean cookieFound = false;

        logger.info("Displaying session value for product compare" + sessionService.getAttribute("sessionProductCode"));
        if (cookies != null)
        {
            logger.info("Cookies not null");
            for (final Cookie cookie : cookies)
            {
                logger.info("Cookie name" + cookie.getName());
                if (cookie.getName().equals("productList") && cookie.getValue() != null)
                {
                    cookieFound = true;
                    productList = cookie.getValue().toString();
                    logger.info("Product List value" + cookie.getValue().toString());

                }
            }
        }

if (cookieFound == false)
        {
            if (sessionService.getAttribute("sessionProductCode") != null)
            {
                productList = sessionService.getAttribute("sessionProductCode");
            }
        }

        final ArrayList<ProductCompareDTO> prodCompareMapPanelView = populateCompareMap(productList);

        if (component.getDisplayType().toString() == CommonConstants.COMPARE_VIEW_PANEL)
        {
            logger.info("Displaying panel view ");
            model.addAttribute("prodCompareMapPanelView", prodCompareMapPanelView);
        }
        else

        if (component.getDisplayType().toString() == CommonConstants.COMPARE_VIEW_FULL)
        {
            logger.info("Displaying full view ");
        }

        model.addAttribute("displaytype", component.getDisplayType().toString());
        model.addAttribute("maxCount", component.getMaxProductCount());
    }

घटक JSP

    <c:choose>
        <c:when test="${not empty maxCount && not empty displaytype}">


            <div id="compare-pane" class="row comparePanel1">
                <button type='button' onclick='doComparePanelClose()'>Close
                    Compare Panel</button>

                <c:if test="${displaytype == 'PANELVIEW'}">

                    <c:forEach items="${prodCompareMapPanelView}" var="mapEntry">
                        <div class="col-sm-4" id="innerdiv${mapEntry.code}">

                            <c:if test="${(not empty mapEntry.name)}">
                            ${mapEntry.name}
                            </c:if>
                            <c:if test="${not empty mapEntry.thumbnail }">
                                <img src="${mapEntry.thumbnail}" />
                                <button id="close${mapEntry.code}" class="compareButton"
                                    type="submit" data-product-id="${mapEntry.code}"
                                    onclick="closeCompareProductPanel('${mapEntry.code}');">Close
                                    X</button>
                            </c:if>
                        </div>

                    </c:forEach>

                </c:if>

                <div id="bottomInnerComparePanel1">*Compare upto ${maxCount }
                    products</div>
                <button id="comparesubmit" class="compareButton" type="submit"
                    onclick="compareSubmit();">See Comparison ></button>

            </div>
            <c:url value="/search/compare" var="compareUrl" />
            <form id="compareForm" method="get" action="${compareUrl}"
                target="_blank">

                <c:if test="${displaytype == 'FULLVIEW'}">
                </c:if>
            </form>
        </c:when>

    </c:choose>

SearchPageController

    @SuppressWarnings("boxing")
        @RequestMapping(value = "/compare", method = RequestMethod.GET)
        public String compareProducts(@RequestParam(value = "prevPage", defaultValue = StringUtils.EMPTY) final String prevPage,
                final Model model, final HttpSession session, final HttpServletRequest request)
                throws CMSItemNotFoundException, UnsupportedEncodingException
        {
        // fetching product list from sesssion and returning Product Data map

    final Map<String, List<ProductClassificationData>> productClassDataMap = new HashMap<String, List<ProductClassificationData>>();
            final Map<String, HashSet<String>> prodClassMap = new TreeMap<String, HashSet<String>>();
            final String lastCode = null;

            final Cookie[] cookies = request.getCookies();
            String productList = null;
            boolean cookieFound = false;

            if (cookies != null)
            {
                logger.info("Cookies not null");
                for (final Cookie cookie : cookies)
                {
                    logger.info("Cookie name" + cookie.getName());
                    if (cookie.getName().equals("productList") && cookie.getValue() != null)
                    {
                        cookieFound = true;
                        productList = cookie.getValue().toString();
                        logger.info("Product List value" + cookie.getValue().toString());

                    }
                }
            }

    if (StringUtils.isNotBlank(productList))
            {
                final String[] values = productList.split("\\|");
                final String PRODUCT_COMPARE_PAGE = "productComparePage";
                storeCmsPageInModel(model, getContentPageForLabelOrId(PRODUCT_COMPARE_PAGE));
                setUpMetaDataForContentPage(model, getContentPageForLabelOrId(PRODUCT_COMPARE_PAGE));
                final List<ProductData> productDatalList = new ArrayList<ProductData>();
                final List<String> productCodesList = new ArrayList<String>();
                for (final String productcode : values)
                {
                    ProductData productData = null;
                    final List<ProductOption> options = new ArrayList<>(
                            Arrays.asList(ProductOption.BASIC, ProductOption.CLASSIFICATION, ProductOption.PRICE, ProductOption.STOCK));
                    if (productcode != null && "".equalsIgnoreCase(productcode))
                    {
                        productData = productFacade.getProductForCodeAndOptions(productcode, options);
                        productDatalList.add(productData);
                        productCodesList.add(productcode);
                    }
                }
    // fetch feature data and add it to model

    }

final int mapSize = finalDataList.size();
            model.addAttribute("finalDataList", finalDataList);
            model.addAttribute("mapSize", mapSize);
            model.addAttribute("compareCodeList", productCodesList);
            model.addAttribute("compareCodeListSize", productCodesList.size());
            model.addAttribute("prodDataList", productDatalList);
        }

        return getViewForPage(model);
   }

जब उपयोगकर्ता "तुलना बटन देखें" पर क्लिक करता है तो मैं एक नए पृष्ठ productComparePage.jsp पर रीडायरेक्ट कर रहा हूं जहां मैं अपने सभी विशेषताओं के साथ उत्पादों की पूरी तुलना प्रदर्शित करना चाहता हूं। लेकिन अभी मुझे सर्च पेज कंट्रोलर से कंपोनेंट कंट्रोलर पर फिर से रीडायरेक्ट किया जा रहा है। मुझे इस नए पेज पर फिर से पैनल व्यू मिलता है।

-1
ADIT 2 जून 2018, 17:59

1 उत्तर

सबसे बढ़िया उत्तर

आप वस्तु को स्टोर करने के लिए कुकी का उपयोग कर सकते हैं। आप इंटरनेट पर कई उदाहरण पा सकते हैं। जैसे यह, यह। आपको प्रत्येक उत्पाद डेटा को कुकी में संग्रहीत नहीं करना चाहिए।

मैं क्या सुझाव दूंगा

  • उत्पाद तुलना पैनल/घटक बनाएं, जो हमेशा स्क्रीन पर होना चाहिए।
  • जब भी उपयोग किसी उत्पाद का चयन करता है, तो उसे आपके तुलना पैनल में जोड़ना चाहिए और उस उत्पाद कोड (एसकेयू), नाम, छवि स्रोत को कुकी में संग्रहीत करना चाहिए। सुनिश्चित करें कि उत्पाद तुलना पैनल हमेशा कुकी डेटा का उपयोग करके प्रदर्शित होता है, इसलिए पेज रीफ्रेश होने पर भी यह काम करेगा। वैसे ही, आपको निकालें ईवेंट को संभालना होगा।

  • जब कोई उपयोगकर्ता तुलना बटन पर क्लिक करता है, तो आप चयनित उत्पाद कोड (कुकीज़ से) की सूची के साथ अजाक्स कॉल कर सकते हैं और अपने तुलना पृष्ठ को प्रस्तुत करने के लिए उत्पाद डेटा ऑब्जेक्ट प्राप्त कर सकते हैं या बस अपने नियंत्रक को डेटा जमा कर सकते हैं और तुलना पृष्ठ प्रदर्शित कर सकते हैं।

हालाँकि, बहुत सारे ओपन सोर्स प्लगइन उपलब्ध हैं जो आपको अपना काम पूरा करने में भी मदद कर सकते हैं।

1
HybrisHelp 14 जून 2018, 07:58