Search code examples
springthymeleaf

How to do increase and decrease button?


I have Spring Boot application with Thymeleaf in which there is a button increase and decrease amount of products in basket. And it is not working.

This is my Controller:

@GetMapping("/decrease{basketItemIndex}")
public String decreaseAmountOfProductsInBasket(@PathVariable Integer basketItemIndex){
    basketService.decreaseAmount(basketItemIndex);
    return "redirect:/basket/";
}
@GetMapping("/increase{basketItemIndex}")
public String increaseAmountOfProductsInBasket(@PathVariable Integer basketItemIndex){
    basketService.increaseAmount(basketItemIndex);
    return "redirect:/basket/";
}

This is my Service:

public void decreaseAmount(int basketItemIndex) {
    if (basketItems.get(basketItemIndex).getAmount() == 1)
        basketItems.remove(basketItemIndex);
    else {
        basketItems.get(basketItemIndex).setAmount(-1);
    }
}

public void increaseAmount(int basketItemIndex) {
    basketItems.get(basketItemIndex).setAmount(+1);
}

And this is my thymeleaf:

 th:href="@{/basket/decrease/{index}(index=${stat.index})}"

Please help me find where I have made a mistake.


Solution

    1. Instead of -1, +1 use --amount, ++amount to decrement and increment
    public void decreaseAmount(int basketItemIndex) {
        if (basketItems.get(basketItemIndex).getAmount() == 1)
            basketItems.remove(basketItemIndex);
        else {
            int amount = basketItems.get(basketItemIndex).getAmount();
            basketItems.get(basketItemIndex).setAmount(--amount);
        }
    }
    
    public void increaseAmount(int basketItemIndex) {
        int amount = basketItems.get(basketItemIndex).getAmount();
        basketItems.get(basketItemIndex).setAmount(++amount);
    }
    
    1. Change @GetMapping("/decrease{basketItemIndex}") to @GetMapping("/decrease/{basketItemIndex}") (add the slash after the decrease)