Используется для сравнения товаров.У продукта есть такие атрибуты, как код продукта, имя, URL-адрес изображения, отзывы, цена и т. Д. Моя панель сравнения продуктов будет иметь только несколько функций для каждого продукта, который я планирую сохранить в сеансе.Можно ли это сделать с помощью 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, где я хочу отобразить полнуюсравнение товаров со всеми его атрибутами.Но сейчас я снова перенаправлен с контроллера Search Page на контроллер компонентов.Я снова вижу панель на этой новой странице.