省略Spring注释@ResponseBody导致404

时间:2016-02-15 10:10:45

标签: angularjs spring

如果我省略@ResponseBody,在我的服务中,此服务会返回404错误,但服务已成功调用。

在日志中我收到此例外:

.10:00:38.716 [http-nio-8082-exec-10] WARN  o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/app/services/myservice/log] in DispatcherServlet with name 'services' 

添加@ResponseBody是否返回导致调用端点不触发404的数据?

以下是我使用AngularJS调用服务的方式:

  $http({
        method : 'POST',
        url : 'services/myservice/log'
    }).error(function(data, status) {
            alert('Error occurred '+status);
    })

2 个答案:

答案 0 :(得分:0)

添加@ResponseBody或将控制器类注释为@RestController告诉Spring将处理程序方法返回值直接写入 HTTP Response Body 。如果省略,spring会尝试解析一个视图,因为,我猜,你没有为此定义任何合适的 View Resolver ,它将返回 404 Not Found Error < / em>的

答案 1 :(得分:0)

当你从$http打电话时,它可能会等待json数据返回而没有@ResponseBody,控制器不会理解它应该将对象发送为 json / xml 格式。这就是为什么春天抱怨没有可以处理这个要求的路径的原因。