Приложение AngularJS не может получить список с сервера (Java Spring)

0

Я пытаюсь загрузить List<Pick> на свой внешний сервер формы приложения. На сервере у меня есть приложение Spring, и я использую hibernate для загрузки объектов выбора из базы данных

Регулятор пружины:

@RequestMapping(value = "/web2/getActivePicks", method =  RequestMethod.POST)
public @ResponseBody List<Pick>  getActivePicks() {
    PickDAO pd = new PickDAO();
    List<Pick> picks = pd.getPicksFrom(new Date()); 
    return picks;   
}

Когда я пытаюсь получить этот список выбора, я получаю '

HTTP Status 500 - Could not write JSON: 
(was java.lang.NullPointerException) 
(through reference chain: java.util.ArrayList[0]-&gt;com.gepick.app.objects.rmo.Pick[&quot;match&quot;]-&gt;com.gepick.app.objects.rmo.soccer.Match_soccer[&quot;ar&quot;]); 
nested exception is org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException) 
(through reference chain: java.util.ArrayList[0]-&gt;com.gepick.app.objects.rmo.Pick[&quot;match&quot;]-&gt;com.gepick.app.objects.rmo.soccer.Match_soccer[&quot;ar&quot;])

Мой класс:

@Entity
public class Pick {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int pid;

@OneToOne
private Match_soccer match;

@OneToOne
private Algo1 algo;

@Column(length = 100)
private String pick;

@Column(length = 5)
private double plimit;
....

Я меняю контроллер на:

@RequestMapping(value = "/web2/getActivePicks", method =     RequestMethod.POST)
public @ResponseBody JSONArray  getActivePicks() {
    PickDAO pd = new PickDAO();
    JSONArray picks = new JSONArray(pd.getPicksFrom(new Date()));
    return picks;   
}

Но теперь я получаю статус http 406 и messgae:

The resource identified by this request is only capable of generating responses 
with characteristics not acceptable according to the request "accept" headers
Теги:
spring
hibernate
jackson

3 ответа

1
Лучший ответ

Похоже, что когда Jackson, ваш JSON карпер пытается конвертировать экземпляр Pick, Match_soccer имеет значение null и выдает исключение.

Вы можете либо увидеть, что ваш Match_soccer инициализирован перед сопоставлением, либо вы можете аннотировать свой класс Pick этим @JsonInclude(Include.NON_NULL).

Это даст указание картеру игнорировать все нулевые поля из отображения

0

Проблема связана с объектом соответствия, поскольку hr и ar имеют значение null.

0

Похоже, у Spring нет способа по умолчанию конвертировать List в JSON, поэтому он не сможет передать его над REST. Вы можете сначала преобразовать его в JSONArray?

  • 0
    Я меняю контроллер, смотри вверх :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню