我有一个带cors的弹簧靴。我想设置一个静态页面控制器, 我想为相同的发布/获取请求返回一个静态html页面。
get请求有效,但是对于post请求,我有: { “时间戳记”:1563296215801, “状态”:405, “错误”:“方法不允许”, “ message”:“不支持请求方法'POST'”, “路径”:“ /测试” }
我的代码:
@Controller
@RequestMapping("/")
public class StaticPageController implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/test").setViewName(
"test");
}
@RequestMapping(value = "test", method = { RequestMethod.GET,
RequestMethod.POST })
public String test() {
return "test";
}
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("folder/");
resolver.setSuffix(".html");
return resolver;
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
对于发布请求,我的断点位于“返回“测试”;”被解雇了。但是在出现405错误之后...
有什么想法吗?
答案 0 :(得分:0)
您正面临这个问题,因为在配置/test
的GET端点的同时,还配置了ViewControllerRegistry
以将视图test
返回到/test
url。 / p>
只要您想在不需要控制器的情况下提供静态内容,就可以配置ViewControllerRegistry
。因此,请尝试将其删除,并且您的控制器方法应该可以按预期工作,因为默认情况下ViewControllerRegistry
仅支持GET。
- 协助注册预先配置了状态代码和/或视图的简单自动化控制器。 ViewControllerRegistry 注册视图控制器。
- 使用ViewControllerRegistry时,我们无需创建实际的控制器类。当我们只需要映射URL时使用它
以期。 addViewController(String urlPath):添加一个视图
给定URL的控制器。- 此方法返回ViewControllerRegistration并使用ViewControllerRegistration.setViewName()对应视图是
映射。 addRedirectViewController(String urlPath,String
redirectUrl):它将一个URL映射到另一个URL以对其进行重定向。它有
在4.1版春季引入。- addStatusController(String urlPath,HttpStatus statusCode):它映射具有给定状态代码的URL。它也已在春季推出 4.1。
尝试使用:
@Controller
@RequestMapping("/")
public class StaticPageController implements WebMvcConfigurer {
@RequestMapping(value = "test", method = { RequestMethod.GET,
RequestMethod.POST })
public String test() {
return "test";
}
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("folder/");
resolver.setSuffix(".html");
return resolver;
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}