Ajax 作为对象列表的ResponseBody-500(内部服务器错误)

Ajax 作为对象列表的ResponseBody-500(内部服务器错误),ajax,json,Ajax,Json,我试图从ajax请求中获取对象列表,并获取内部服务器错误。它早上还在工作,但现在不行了。 Ajax请求: $.ajax({ type : 'get', url : 'http://localhost:8080/FootballManager/draft/' + leaguename + '/players', dataType : "json", data : { "leaguename" : leaguename

我试图从ajax请求中获取对象列表,并获取内部服务器错误。它早上还在工作,但现在不行了。 Ajax请求:

$.ajax({
    type : 'get',
    url : 'http://localhost:8080/FootballManager/draft/' + leaguename
            + '/players',
    dataType : "json",
    data : {
        "leaguename" : leaguename
    },
    contentType : "application/json",
    cache : false,
    success : function(data) {
         drawTable(data);   
    },
    error : function(XmlHttpRequest, textStatus, errorThrown) {
        alert("error= " + errorThrown);
    }
});
Spring mvc控制器:

    @RequestMapping(value = "{leaguename}/players", method = RequestMethod.GET,headers = "Accept=application/json")
public @ResponseBody
List<Players> getPlayers(@RequestParam("leaguename") String leaguename,HttpSession session) {
    try {
        //list of players
        return players;
    } catch (Exception e) {
        LOG.log(Level.SEVERE, "Exception: ", e);
        return null;
    }
}
@RequestMapping(value=“{leaguename}/players”,method=RequestMethod.GET,headers=“Accept=application/json”)
公共@ResponseBody
列出GetPlayer(@RequestParam(“leaguename”)字符串leaguename,HttpSession会话){
试一试{
//球员名单
返回球员;
}捕获(例外e){
LOG.LOG(严重级别,“异常:”,e);
返回null;
}
}


UPD。奇怪的是,它适用于其他对象列表,也奇怪的是,如果我手动创建所有对象(如new Player()),并使用setter设置相同的字段,并将所有对象添加到列表中,它会起作用,但如果我通过hibernate从DB获得这些对象,我就解决了这个错误。将fetchType更改为Eager解决了此问题。

Eager不是解决方案。这是解决缺点的办法。我认为,您的问题是,您的集合没有加载,并且在事务之外,您(或您的序列化程序)没有访问db的权限。解决方案之一是使用DTO将数据传输到客户端并读取其中的数据。它也被认为是一种解决方法,但实际上,在客户端,您通常会有专门的、受限的视图进行消费。

实际错误是什么?:)500不是一个错误解释,它只是意味着服务器抛出了一个错误。因此,打开chrome开发工具,启用ajax日志记录,重新加载页面,查找500错误,单击它,单击查看结果,然后读取实际的服务器错误是什么。500(内部服务器错误)这一切都在ajax日志记录中:(这是您的服务器,那么当您在debug中运行它时会发生什么异常。