AngularJS 应用程序无法从服务器获取列表 (Java Spring)
AngularJS application can`t get List from Server (Java Spring)
我尝试将 List<Pick>
加载到我的前端申请表服务器。在服务器上,我有 Spring 应用程序,我使用休眠从数据库中加载选择对象
Spring 控制器:
@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]->com.gepick.app.objects.rmo.Pick["match"]->com.gepick.app.objects.rmo.soccer.Match_soccer["ar"]);
nested exception is org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException)
(through reference chain: java.util.ArrayList[0]->com.gepick.app.objects.rmo.Pick["match"]->com.gepick.app.objects.rmo.soccer.Match_soccer["ar"])
我的选择class:
@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 和消息:
The resource identified by this request is only capable of generating responses
with characteristics not acceptable according to the request "accept" headers
看起来 Spring 没有将 List
转换为 JSON 的默认方法,因此无法通过 REST 传递它。你能先把它转换成JSONArray
吗?
问题出在匹配对象上,因为 hr 和 ar 属性为空。
似乎在 Jackson
时,您的 JSON
mapper 正在尝试转换 Pick
实例,Match_soccer
为 null 并引发异常。
您可以看到您的 Match_soccer
在 映射 之前初始化,或者您可以 注释 您的 Pick
class 与此 @JsonInclude(Include.NON_NULL)
.
This 将指示 mapper 忽略 mapping[=] 中的所有 null 字段30=]
我尝试将 List<Pick>
加载到我的前端申请表服务器。在服务器上,我有 Spring 应用程序,我使用休眠从数据库中加载选择对象
Spring 控制器:
@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]->com.gepick.app.objects.rmo.Pick["match"]->com.gepick.app.objects.rmo.soccer.Match_soccer["ar"]);
nested exception is org.codehaus.jackson.map.JsonMappingException: (was java.lang.NullPointerException)
(through reference chain: java.util.ArrayList[0]->com.gepick.app.objects.rmo.Pick["match"]->com.gepick.app.objects.rmo.soccer.Match_soccer["ar"])
我的选择class:
@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 和消息:
The resource identified by this request is only capable of generating responses
with characteristics not acceptable according to the request "accept" headers
看起来 Spring 没有将 List
转换为 JSON 的默认方法,因此无法通过 REST 传递它。你能先把它转换成JSONArray
吗?
问题出在匹配对象上,因为 hr 和 ar 属性为空。
似乎在 Jackson
时,您的 JSON
mapper 正在尝试转换 Pick
实例,Match_soccer
为 null 并引发异常。
您可以看到您的 Match_soccer
在 映射 之前初始化,或者您可以 注释 您的 Pick
class 与此 @JsonInclude(Include.NON_NULL)
.
This 将指示 mapper 忽略 mapping[=] 中的所有 null 字段30=]