【发布时间】:2019-10-27 17:12:27
【问题描述】:
我有一个 Spring Boot 应用程序,其中我正在创建一个带有 @Controller 注释的控制器,当我尝试使用它显示给我 404, "not found" 的 url 访问资源时。但是只要我在类级别或方法级别添加注释@ResponseBody,它就会给我想要的输出。我想在这里了解@Responsebody的作用为什么会影响url识别。据我所知@ResponseBody 处理回复。
当我有如下代码时 -
@Controller
@RequestMapping(value = "test")
public class TestController {
@RequestMapping(value = "/m1")
public @ResponseBody String testMethod(){
return "Hello First Application";
}
}
它给了我一个准确的输出为Hello First Application
当我从方法 testMethod() 中删除 @ResponseBody 时,它会给我以下输出。
{
"timestamp": "2019-06-13T06:36:14.510+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/test/m1"
}
我期待一个字符串作为响应。
【问题讨论】:
-
如果没有
@ResponseBody,String被解释为要呈现的网页的名称,它按原样使用。 -
这个错误似乎是模棱两可的,我认为作为响应应该有不同的错误消息,以便开发人员能够理解。乍一看,似乎没有为此 url 指定映射。在阅读了许多文章后,我很清楚。我在 Spring Boot 应用程序中仍然面临一些问题,以获取我将修复的正确视图。但我认为错误信息应该比当前的更慷慨。
-
错误有什么问题,视图也是一个 URL,因此 404 是完全可以接受的。找不到该视图,如果您检查日志(您可能需要启用调试),您将看到这一点。
-
是的,我刚刚设置启用调试,现在很清楚发生了什么。谢谢@M.Deinum
标签: java spring spring-boot