0

是的,实际上我在整个会话过程中遇到了一个奇怪的问题。

我有一个控制器如下:

@SessionAttributes({"cart", "order"})
public class CartController {

好的,我有一个将商品添加到购物车的请求:

@RequestMapping(method = RequestMethod.POST, value = "/kleidung/{slug}")
@Transactional
public String addClothingToCart(final Model model,
                                @ModelAttribute("addToCartAttribute") @Valid final AddToCartDTO cartDto,
                                final BindingResult errors, @PathVariable("slug") final String slug,
                                @ModelAttribute("cart") Cart cart,
                                final HttpServletRequest request) {

    final Clothing clothing = clothingRepository.findBySlug(slug);
    validateAddToCartDto(cartDto, errors);
    if (errors.hasErrors()) {
        return viewPreparer.prepareDetailViewFor(clothing, model);
    }
    addProductToCart(cartDto, clothing, cart);
    cart = cartRepository.saveAndFlush(cart);
    return "redirect:/warenkorb";
}

由于我对解决我的问题感到失望,我应用了事务注释我认为它没有改变任何东西,所以它不会使问题变得更糟或更好。

反正

另一种方法可以删除项目如下:

 @RequestMapping(method = {RequestMethod.GET, RequestMethod.DELETE}, value = "/{listId}")
@Transactional
public String deleteItemFromCart(@PathVariable("listId") final String listId,
                                 @ModelAttribute("cart") Cart cart,
                                 final SessionStatus session) {
    cart.getOrderItems().remove(Integer.parseInt(listId));
    if (cart.getOrderItems().isEmpty()) {
        session.setComplete();
    }
    cart = cartRepository.saveAndFlush(cart);
    return "redirect:/warenkorb";
}

到目前为止,一切都很好 :)

现在出现了奇怪的部分,如果我将两个项目添加到购物车并删除其中一个,然后尝试更改购物车,我总是得到一个 EntityNotFoundException。

整个会话的行为是如此奇怪,我不知道如何解决它。

也许有人有建议或解决方案。

4

0 回答 0