@RequestMapping(value = "/cart/add", method = RequestMethod.POST, produces = "application/json") public String addToCart( @RequestParam("productCodePost") final String code, final Model model, @Valid final AddToCartForm form, final BindingResult bindingErrors) { if (bindingErrors.hasErrors()) { return getViewWithBindingErrorMessages(model, bindingErrors); } final long qty = form.getQty(); if (qty <= 0) { model.addAttribute(ERROR_MSG_TYPE, "basket.error.quantity.invalid"); model.addAttribute("quantity", Long.valueOf(0L)); } else { try { final CartModificationData cartModification = cartFacade.addToCart(code, qty); model.addAttribute("quantity", Long.valueOf(cartModification.getQuantityAdded())); model.addAttribute("entry", cartModification.getEntry()); model.addAttribute("cartCode", cartModification.getCartCode()); if (cartModification.getQuantityAdded() == 0L) { model.addAttribute( ERROR_MSG_TYPE, "basket.information.quantity.noItemsAdded." + cartModification.getStatusCode()); } else if (cartModification.getQuantityAdded() < qty) { model.addAttribute( ERROR_MSG_TYPE, "basket.information.quantity.reducedNumberOfItemsAdded." + cartModification.getStatusCode()); } } catch (final CommerceCartModificationException ex) { model.addAttribute(ERROR_MSG_TYPE, "basket.error.occurred"); model.addAttribute("quantity", Long.valueOf(0L)); } } model.addAttribute( "product", productFacade.getProductForCodeAndOptions(code, Arrays.asList(ProductOption.BASIC))); return ControllerConstants.Views.Fragments.Cart.AddToCartPopup; }