Spring RESTful服务返回500内部服务器错误

时间:2014-02-23 14:55:46

标签: spring rest spring-mvc

我使用angularjs $ http服务发布到Spring REST端点。这是非常直接的,它按预期工作,但终点是返回状态代码500内部错误。但在服务器端,它不会显示任何错误和异常。我发送邮件请求如下

$http.post('../bookmarks/add',data,{
        cache:false,
        headers:{'Content-Type':'application/x-www-form-urlencoded'},
        transformRequest:function(data){
            if(data===undefined)
                return data;

            return $.param(data);
        },
        responseType:'json'
    }).success(function(data,status,headers,config){
        $('.add-form').hide();
        console.log(data);
        callback(data,'success');
    }).error(function(data,status,headers,config){
        console.log(status);
        if(status==500)
            callback('Server error! Try again later.','error');
    });

我可以发送帖子请求。我的REST处理程序如下。它调用服务来持久化对象。

@RequestMapping(value="/add", method=RequestMethod.POST, consumes={"application/x-www-form-urlencoded","application/json", "text/plain", "*/*"})
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Bookmark saveBookmarks(@RequestParam("caption") String caption,@RequestParam("bookmarkUrl") String bookmarkUrl,
        @RequestParam(value="tags",required=false) String tags,@RequestParam(value="category", required=false) String category){
    System.out.println(caption+"-"+tags+"-"+category);

    //calling service and persisting the object
    Bookmark bookmark= bookmakService.saveBookmark(
            binder.getNewBookmark(caption,bookmarkUrl, dateGen.getToday(), category, tags)
            ,getUserIDFromSession());

    System.out.println(bookmark);
    return bookmark;
}

上面的处理程序按预期工作。该对象是持久的。但浏览器控制台显示500内部服务器错误,服务器不记录任何错误和异常。一切都很直接。我不知道客户端为什么会收到500错误。我正在使用Apache Tomcat 7。

3 个答案:

答案 0 :(得分:0)

你可以告诉杰克逊用@JsonIgnore忽略一个属性。

@JsonIgnore
private User user;

这里有一个关于在序列化Json

时忽略属性的5种方法的教程

http://www.baeldung.com/jackson-ignore-properties-on-serialization

答案 1 :(得分:0)

在pom中添加以下依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.10.1</version>
</dependency>

面临与返回类型相同的问题,无法与Class Bookmark的MediaType绑定。广告

答案 2 :(得分:0)

我遇到了类似的问题,但原因不同。如果可以从数据库中获取对象,但是json序列化失败,就会出现问题。

对我来说,这是由于私有 Double 类型的空值,但我的公共 getter 返回了 double 原始类型。当序列化器尝试序列化对象时,这可能返回一个空指针异常,但它没有记录在任何地方,也没有堆栈跟踪。