我的控制器看起来像这样:
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
?
答案 0 :(得分:2)
您是正确的@RestController
将始终在方法上生成ResponseBody
。您需要使用标准@Controller
来返回模板或视图
@RestController
专门用于RESTful Web应用程序和@Controller
用于MVC Web应用程序。
答案 1 :(得分:1)
这个注释是为了处理web服务,它是关于数据的,HTML等表示标记在这里没有任何作用。
如果涉及view
,则此注释是您要使用的。 view
可以是任何会吐出html
的内容(包含或不插入model
)。你可以使用好的'JSP,JSF或模板引擎,如freemarker,thymeleaf,velocity等作为view
。