使用Spring @RestController而不使用隐式@RequestBody

时间:2018-01-26 15:42:25

标签: spring spring-boot controller spring-webflux

我的控制器看起来像这样:

import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class MainController
{
    @GetMapping("/test")
    public String test()
    {
        return "test";
    }
}

“test”-String我返回的是应该处理的Thymeleaf模板的文件名。相反,当我访问页面时,只显示“test”。我已经读过@RestController隐含地对其所有映射执行了@ResponseBody。但是我怎么能防止这种情况呢?或者我应该只使用@Controller

2 个答案:

答案 0 :(得分:2)

您是正确的@RestController将始终在方法上生成ResponseBody。您需要使用标准@Controller来返回模板或视图 @RestController专门用于RESTful Web应用程序和@Controller用于MVC Web应用程序。

答案 1 :(得分:1)

@RestController

这个注释是为了处理web服务,它是关于数据的,HTML等表示标记在这里没有任何作用。

@Controller

如果涉及view,则此注释是您要使用的。 view可以是任何会吐出html的内容(包含或不插入model)。你可以使用好的'JSP,JSF或模板引擎,如freemarker,thymeleaf,velocity等作为view