Rest API方法返回值但仍然收到500错误

时间:2014-02-23 22:24:40

标签: java jquery ajax rest jersey

我正在使用Java Jersey REST API和使用此API的网站。

这是我的服务器端方法

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<TreeViewModel> getTreeList() {
    User user = User.getByCredentials("team", "team");
    List<TreeViewModel> list = user.getTreeViewModels();
    return list;
}

这是我的javascript请求

function requestTrees() {
$.ajax({
    type: "GET",
    url: window.api + "tree",
    dataType: 'json',
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", make_base_auth('team', 'team'));
    },
    success: function(data) {
        console.log('suc');
    },
    complete: function(jqxhr, txt_status) {
        console.log('com');
    },
    failed: function(data) {
        console.log('fai');
    }
});

}

如果我调试我的服务器,则会调用该方法并返回列表。但在客户端,我收到500错误,表明服务器端出现了问题?

有什么建议吗? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

500表示内部服务器错误,通常应该伴有日志消息,甚至在某些情况下会在发送给客户端的消息体中嵌入异常。

最有可能发生的事情是您的方法已处理并返回List<TreeViewModel>,但无法将其序列化以便发送。

例如,某些序列化程序不喜欢使用原始集合。您需要拥有自己的对象,然后将列表放在其中。找到问题的实际原因的唯一方法是找到该异常,看看它告诉你什么。