当从控制器中移除@ResponseBody时,会收到404未找到错误消息。
当从控制器中移除@ResponseBody时,会收到404未找到错误消息。
我有一个Spring Boot应用程序,在其中我使用@Controller
注解创建了一个控制器。当我尝试使用URL访问资源时,它显示404, "not found"
错误。但是,一旦我在类级别或方法级别添加@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注解时,会出现404未找到错误消息的问题。这个问题的原因是,移除@ResponseBody注解后,控制器无法正确识别返回的对象格式。通常,@ResponseBody
注解用于返回视图,而@RestController
注解用于返回JSON格式的数据。移除@ResponseBody注解会导致控制器无法正确解析返回的数据类型,从而出现404未找到错误。
解决这个问题的方法是在控制器中添加@ResponseBody注解,以告诉控制器返回的对象是经过格式化的。这样控制器就能正确解析返回的数据类型,并返回正确的结果。
更多关于@ResponseBody注解的详细信息可以参考以下链接:https://www.baeldung.com/spring-request-response-body
当从控制器中移除@ResponseBody时,会出现404未找到错误消息的原因是:这取决于您的视图解析。只需验证您为项目指定的默认视图解析器即可。如果没有使用@ResponseBody,Spring将尝试解析匹配字符串"hello ..."的视图,但该视图不存在。如果使用了@ResponseBody,返回值将被序列化并写入HTTP响应中。
解决方法:参考https://www.baeldung.com/spring-request-response-body