Весной MVC возвращает ответ AJAX с использованием Jackson -- jquery поле с участием json поле с участием spring-mvc поле с участием jackson пол Связанный проблема

Spring MVC return ajax response using Jackson


0
vote

проблема

русский

У меня есть сценарий, в котором я заполняю раскрывающуюся коробку в JSP через ответ AJAX с сервера. В контроллере я отказываюсь от коллекции объектов продукта и аннотировал тип возврата с @Responseboodbode.

контроллер -

 <код> @RequestMapping(value="/getServicesForMarket", method = RequestMethod.GET) public @ResponseBody Collection<Product> getServices(@RequestParam(value="marketId", required=true) int marketId) {     Collection<Product> products = marketService.getProducts(marketId);     return products; }   

и продукт составляет

 <код> @Entity @Table(name = "PRODUCT") public class Product implements Serializable {      private static final long serialVersionUID = 1L;      private int id;      private Market market;      private Service service;      private int price;      @Id     @GeneratedValue(strategy = GenerationType.AUTO)     public int getId() {         return id;     }      public void setId(int id) {         this.id = id;     }      @ManyToOne(fetch=FetchType.LAZY)     @JoinColumn(name = "MARKET_ID")     public Market getMarket() {         return market;     }      public void setMarket(Market market) {         this.market = market;     }      @ManyToOne(fetch=FetchType.LAZY)     @JoinColumn(name = "SERVICE_ID")     public Service getService() {         return service;     }      public void setService(Service service) {         this.service = service;     }      @Column(name = "PRICE")     public int getPrice() {         return price;     }      public void setPrice(int price) {         this.price = price;     } }   

Сервис

 <код> @Entity @Table(name="SERVICE") public class Service implements Serializable {      /**      *       */     private static final long serialVersionUID = 1L;      private int id;      private String name;      private String description;      @Id     @GeneratedValue     @Column(name="ID")     public int getId() {         return id;     }      public void setId(int id) {         this.id = id;     }      @Column(name="NAME")     public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      @Column(name="DESCRIPTION")     public String getDescription() {         return description;     }      public void setDescription(String description) {         this.description = description;     } }   

в JSP, мне нужно также получить данные из сервисной области продукта. Поэтому я в моей функции обратного вызова jQuery я написал как Product.service.description, чтобы получить данные.

Кажется, что по умолчанию Jackson не отображает связанный объект обслуживания (или любой другой пользовательский объект). Также я не получаю никакого исключения. В JSP я не получаю данные. Он работает нормально, когда я возвращаю коллекцию некоторых объектов, который не содержит никаких других пользовательских объектов в качестве его полей.

Я пропускаю какие-либо настройки для этого на работу?

Спасибо!

Английский оригинал

I have a scenario where I am filling a dropdown box in JSP through AJAX response from the server. In the controller, I am retuning a Collection of Product objects and have annotated the return type with @ResponseBody.

Controller -

@RequestMapping(value="/getServicesForMarket", method = RequestMethod.GET) public @ResponseBody Collection<Product> getServices(@RequestParam(value="marketId", required=true) int marketId) {     Collection<Product> products = marketService.getProducts(marketId);     return products; } 

And Product is

@Entity @Table(name = "PRODUCT") public class Product implements Serializable {      private static final long serialVersionUID = 1L;      private int id;      private Market market;      private Service service;      private int price;      @Id     @GeneratedValue(strategy = GenerationType.AUTO)     public int getId() {         return id;     }      public void setId(int id) {         this.id = id;     }      @ManyToOne(fetch=FetchType.LAZY)     @JoinColumn(name = "MARKET_ID")     public Market getMarket() {         return market;     }      public void setMarket(Market market) {         this.market = market;     }      @ManyToOne(fetch=FetchType.LAZY)     @JoinColumn(name = "SERVICE_ID")     public Service getService() {         return service;     }      public void setService(Service service) {         this.service = service;     }      @Column(name = "PRICE")     public int getPrice() {         return price;     }      public void setPrice(int price) {         this.price = price;     } } 

Service is

@Entity @Table(name="SERVICE") public class Service implements Serializable {      /**      *       */     private static final long serialVersionUID = 1L;      private int id;      private String name;      private String description;      @Id     @GeneratedValue     @Column(name="ID")     public int getId() {         return id;     }      public void setId(int id) {         this.id = id;     }      @Column(name="NAME")     public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      @Column(name="DESCRIPTION")     public String getDescription() {         return description;     }      public void setDescription(String description) {         this.description = description;     } } 

In the JSP, I need to get the data from the service field of Product also. So I in my JQuery callback function, I have written like product.service.description to get the data.

It seems that by default Jackson is not mapping the associated service object (or any other custom object). Also I am not getting any exception. In the JSP, I do not get the data. It is working fine when I return Collection of some object which does not contain any other custom objects as its fields.

Am I missing any settings for this to work?

Thanks!

</div
           
         
         

Список ответов

0
 
vote
vote
Лучший ответ
 

Я бы предложил использовать гибернатный модуль для Jackson , это поможет вам игнорировать снимает объекты un-en-initlized. Таким образом, у вас не будет исключение и только полностью инициация преобразования.

 

i would suggest to use hibernate module for jackson, this will help you to ignore hibernate un-initlized objects. this way you will not have exception and only fully initilzed conversion.

</div
 
 
   
   

Связанный проблема

0  Как удалить текст по умолчанию Наведите текст и отобразить название пользовательского текста на Haver Donut Chart HighCharts  ( How to remove default hover text and display the custom text title on hover donu ) 
У меня создана диаграмма пончика, у меня проблема, показывает внутренние текстовые заголовки в двух строках для 'Meternity: 84'. Когда я зависаю / Наведи...

0  Обработчик событий не обнаруживается внутри $ (документ). Ready () [закрыто]  ( Event handler not getting detected inside document ready ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыто. Этот вопрос не воспроизводится или был вызван опечаткам...

2  Scala.js: выбор и манипулирующий сгенерированный SVG  ( Scala js selecting and manipulating generated svg ) 
Я борюсь с чем-то, казалось бы, простым. Использование SCAJA.JS, я создал несколько SVG с библиотекой STALATAGS. Теперь я хочу манипулировать элементами S...

0  jquery widget factory setoptions и setoption  ( Jquery widget factory setoptions and setoption ) 
Можете ли вы помочь, помогите, я пытаюсь понять концепцию <код> setOptions и <код> setOption на заводе виджета. в коде ниже я подумал, что если я изменил ...

0  Ошибка прокладывания слайдера jQuery: ... не удалось конвертировать аргумент JavaScript ARG 0 [NSIDOMHTMLanChorElement.appendChild]  ( Jquery slider throwing error could not convert javascript argument arg 0 ns ) 
Наш сайт Dev Dev имеет ползунок отлично работает здесь: http://allblacks.01dev.co.nz/index.cfm layout = dnahome Однако мы просто поставили сайт Live, и ...

6  Как обнаружить IE7 и ниже, используя jquery.support?  ( How to detect ie7 and lower using jquery support ) 
В настоящее время я использую jquery.browser для обнаружения IE7 и ниже <код> if ($.browser.msie && parseInt($.browser.version) <= 7) { //codes } Но...

0  jQuery работает в Firefox, Safari, но не в Chrome  ( Jquery working in firefox safari but not in chrome ) 
Я написал какой-то код с JQuery Works в Firefox, Safari и IE9. Но Chrome это не нравится. Никаких очевидных MSG в Chrome Console не подходит. Я ударяю стену, ...

1  ajax () не отвечает после события keyup  ( Ajax not responding after keyup event ) 
Это проблема jQuery / ajax. JQuery / ajax отвечает на событие keyup с оповещением (LOC), показывающим результат значения, введенного в текстовое поле числа. ...

0  Имея проблемы с использованием объема в jQuery  ( Having issues using a scope in jquery ) 
Так что я пытаюсь передать значение переменной FreeMarker ($ {item.uid}) на клик ссылки, чтобы запустить модаль с тем же уникальным значением идентификатора. ...

1  jQuery Получить остальные значения опционов в формате CSV  ( Jquery get remaining option values in csv format ) 
Я хочу вернуть форматунную строку CSV, чтобы установить значение поля входного текста с значениями параметров из окна выбора. $. Карта ($ ('# Добавлена ​​д...

41  Тест, если элемент уже имеет jQuery DatePicker  ( Test if element already has jquery datepicker ) 
У меня есть форма со многими входными элементами. Некоторые поля встречаются на сегодняшний день с jQuery UI DatePicker Arlaedy прилагается: <код> $("#someE...

0  jQuery: передача это к детской функции  ( Jquery passing this to child function ) 
У меня есть что-то подобное: <код> $('element.selector').live("click", function (){ run_some_func (); }); $('element.selector2').live("click", function...

0  JQuery - Как два элемента - IMG - Div, когда наведите курсор на IMG Показать / Скрыть Div - добавлен с Hover Hote / Show на IMG AllReady  ( Jquery how two elements img div when hover over img show hide the div ad ) 
Я очень новый для удивления, который jQuery. И я просто выясняю, как сделать мои кнопки IMG показать / прятаться с разницей непрозрачности (как таковой) <...

1  Как включить фотовипе без щелчка?  ( How to turn on photoswipe without click ) 
Я использую мобильный телефон Фотографий Галерея. Моя проблема заключается в том, что мне нужно загрузить его не нажима на изображение, а на кликах на други...

0  jQuery - скрыть предметы, если окно недостаточно высокое  ( Jquery hide items if window is not tall enough ) 
У меня есть фиксированная строка меню слева от страницы. Но я хотел бы, чтобы пункты меню были скрыты, если в окне достаточно высока, чтобы показать все элеме...

Связанный проблема

0  Как удалить текст по умолчанию Наведите текст и отобразить название пользовательского текста на Haver Donut Chart HighCharts 
0  Обработчик событий не обнаруживается внутри $ (документ). Ready () [закрыто] 
2  Scala.js: выбор и манипулирующий сгенерированный SVG 
0  jquery widget factory setoptions и setoption 
0  Ошибка прокладывания слайдера jQuery: ... не удалось конвертировать аргумент JavaScript ARG 0 [NSIDOMHTMLanChorElement.appendChild] 
6  Как обнаружить IE7 и ниже, используя jquery.support? 
0  jQuery работает в Firefox, Safari, но не в Chrome 
1  ajax () не отвечает после события keyup 
0  Имея проблемы с использованием объема в jQuery 
1  jQuery Получить остальные значения опционов в формате CSV 
41  Тест, если элемент уже имеет jQuery DatePicker 
0  jQuery: передача это к детской функции 
0  JQuery - Как два элемента - IMG - Div, когда наведите курсор на IMG Показать / Скрыть Div - добавлен с Hover Hote / Show на IMG AllReady 
1  Как включить фотовипе без щелчка? 
0  jQuery - скрыть предметы, если окно недостаточно высокое