I have a spring form that submits via ajax. Here is my form...
<form:form action="addToCart" method="POST"
                modelAttribute="cartProduct">
                <form:input type="hidden" path="product.productId"
                    value="${inventory.getProduct().getProductId()}" />
                <div class="card-block" style="overflow: hidden; padding: 2%">
                    <h5 style="white-space: nowrap">
                        <a href="#" class="text-primary card-title">${inventory.getProduct().getName()}</a>
                    </h5>
                    <p class="card-text text-danger">₱
                        ${inventory.getProduct().getPrice()}</p>
                    <p>
                    <div class="success-message-container">
                        <span class="text-success add-to-cart"><strong> </strong></span>
                    </div>
                    <div class="success-message vertical-center"
                        style="display: none;">
                        <span class="text-success add-to-cart"><strong>Added
                                to cart!</strong></span>
                    </div>
                    <form:button id="addToCart" class="btn btn-block btn-warning">Add to cart</form:button>
                    <a id="viewCart" href="viewCart" class="btn btn-block btn-warning" style="display: none;">View cart</a>
                </div>
</form:form>
Then it gets submitted via ajax code...
$(document).ready(function() {
var form = $("form");
var url = form.attr("action");
var formMethod = form.attr("method");
form.submit(function(event) {
    event.preventDefault();
    var thisForm = this;
    $.ajax({
        url : url,
        data : $(this).serialize(),
        type : "POST",
        headers: { 
            'Content-Type': 'application/json' 
        },
        success : function(cartProduct) {
            $(thisForm).find('.success-message-container').remove();
            $(thisForm).find('.success-message').show();
            $(thisForm).find('#addToCart').hide();
            $(thisForm).find('#viewCart').toggle();
        }
    });
});
});
});
And here is the receiving rest controller...
@RequestMapping(value="/addToCart", method = RequestMethod.POST)
public CartProduct addToCart(@RequestBody CartProduct cartProduct, HttpServletRequest request){
    System.out.println(cartProduct.getProduct().getProductId());
    return null;
}
However, I keep on getting this error...
POST http://localhost:8080/tommystore/customer/addToCart 400 (Bad Request)
I have imported Jackson for automatic object mapping but it still does not work...
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.6.3</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.6.3</version>
    </dependency>
How can I fix this?
 
    