使用 Spring @RestController 而不隐式 @RequestBody
Use Spring @RestController without implicit @RequestBody
我的控制器看起来像这样:
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 I return 是应该处理的 Thymeleaf 模板的文件名。相反,当我访问该页面时,只会显示 "test" 。我读过 @RestController
隐含地对其所有映射执行 @ResponseBody
。但是我怎样才能防止呢?或者我应该简单地使用 @Controller
?
你是对的 @RestController
将始终在方法上产生 ResponseBody
。您将需要使用标准的 @Controller
到 return 模板或视图。
@RestController
专门设计用于 RESTful 网络应用程序,@Controller
用于 MVC 网络应用程序。
@RestController
这个注释是用来处理网络服务的,它都是关于数据的,HTML 等表示标记在这里没有任何作用。
@控制器
如果涉及到 view
,这个注释就是您想要使用的。 view
可以是任何会吐出 html
的东西(有或没有内插 model
)。您可以使用好的 ol' JSP、JSF 或 freemarker、thymeleaf、velocity 等模板引擎作为 view
.
我的控制器看起来像这样:
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 I return 是应该处理的 Thymeleaf 模板的文件名。相反,当我访问该页面时,只会显示 "test" 。我读过 @RestController
隐含地对其所有映射执行 @ResponseBody
。但是我怎样才能防止呢?或者我应该简单地使用 @Controller
?
你是对的 @RestController
将始终在方法上产生 ResponseBody
。您将需要使用标准的 @Controller
到 return 模板或视图。
@RestController
专门设计用于 RESTful 网络应用程序,@Controller
用于 MVC 网络应用程序。
@RestController
这个注释是用来处理网络服务的,它都是关于数据的,HTML 等表示标记在这里没有任何作用。
@控制器
如果涉及到 view
,这个注释就是您想要使用的。 view
可以是任何会吐出 html
的东西(有或没有内插 model
)。您可以使用好的 ol' JSP、JSF 或 freemarker、thymeleaf、velocity 等模板引擎作为 view
.