Это делаю в первый раз, так что скорее всего явно где-то ошибся. Помогите пожалуйста. Пишу приложение на java, Spring, jQuery(ajax). Делаю корзину и дали задание класть данные о заказе в сессию. Есть класс Basket поля которого подходят для корзины, имеет одну связь one-to-many и одну many-to-one, конфигурация в spring(м.б. неверно):
<bean id="basket" class="com.Basket" scope="session">
<aop:scoped-proxy/>
</bean>
когда делаю запрос возвращает ошибку Failed to load resource: the server responded with a status of 400 () при этом в console рисует нужный json:
$(document).ready(function() {
$.ajax({
type: 'GET',
url: '/basket',
contentType: 'application/json; charset = utf-8',
dataType : 'json',
success: function (data) {
console.log(JSON.stringify(data));
alert('success');
},
error: function (data) {
console.log(JSON.stringify(data));
alert('error');
}
});
});
в контроллере:
@Autowired
public Basket basket;
@RequestMapping(value="/basket", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody Basket getBasket() {
...
return basket;
}
Если возвращаю любой другой объект то код работает как надо. Возможно проблема в самой конфигурации, как правильно класть в сессию в таких случаях или может быть ошибка в другом, буду рад любой помощи.
Ошибка в браузере: Failed to load resource: the server responded with a status of 400 (Bad Request)
В логах:
java.lang.IllegalStateException: Cannot call sendError() after the response has been committed
SEVERE: Servlet.service() for servlet [mvc-dispatcher] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError)
Классы POJO:
public class Basket {
private int id;
...
private User user; //many-to-one
private List<Toys> toys; //one-to-many
}
public class User{
private int id;
...
private List<Basket>baskets;
}
public class Toys{
private int id;
...
private Basket basket;
}
У тебя есть явные циклические зависимости между указанными бинами. Basket
хранит в себе User
, а User
хранит в себе Basket
. Такая же ситуация с Toys
и Basket
. Тебе стоит перепроектировать иерархию связей. Или же, можно сделать подсказать Jackson'у, что некоторые поля не стоит сериализовать (тут надо учесть момент, что их не будет в результатирующем JSON) при помощи JsonIgnore примерно так:
public class Basket {
private int id;
...
private User user; //many-to-one
private List<Toys> toys; //one-to-many
}
public class User{
private int id;
...
@JsonIgnore
private List<Basket>baskets;
}
public class Toys{
private int id;
...
@JsonIgnore
private Basket basket;
}
Есть и другие способы в виде разного рода умных ссылок и т.д., но я рекомендую именно избавиться от циклических связей
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Подскажите пожалуйста кто сталкивался такой ошибкой в чем может быть проблема?
Помогите наложить полоску на фото, но так чтобы справа полоска обрезала фото
В браузер где использую скрипт с import export операторами выводит ошибку