当从控制器中移除@ResponseBody时,会收到404未找到错误消息。

12 浏览
0 Comments

当从控制器中移除@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"

}

我期望得到一个字符串作为响应。

0
0 Comments

当在控制器中移除@ResponseBody注解时,会出现404未找到错误消息的问题。这个问题的原因是,移除@ResponseBody注解后,控制器无法正确识别返回的对象格式。通常,@ResponseBody注解用于返回视图,而@RestController注解用于返回JSON格式的数据。移除@ResponseBody注解会导致控制器无法正确解析返回的数据类型,从而出现404未找到错误。

解决这个问题的方法是在控制器中添加@ResponseBody注解,以告诉控制器返回的对象是经过格式化的。这样控制器就能正确解析返回的数据类型,并返回正确的结果。

更多关于@ResponseBody注解的详细信息可以参考以下链接:https://www.baeldung.com/spring-request-response-body

0
0 Comments

当从控制器中移除@ResponseBody时,会出现404未找到错误消息的原因是:这取决于您的视图解析。只需验证您为项目指定的默认视图解析器即可。如果没有使用@ResponseBody,Spring将尝试解析匹配字符串"hello ..."的视图,但该视图不存在。如果使用了@ResponseBody,返回值将被序列化并写入HTTP响应中。

解决方法:参考https://www.baeldung.com/spring-request-response-body

0