回退以响应Spring Controller的应用程序

时间:2018-01-23 21:46:57

标签: reactjs spring-mvc spring-boot

我尝试了很多解决方案,stackoverflow是我可以询问有关我的问题的最后一个地方。 我已经在后端创建了Spring Boot应用程序,它也为我的前端提供服务。 我的HomeController看起来如下

@Controller
public class HomeController {

    @RequestMapping(value = "/*",  method={RequestMethod.GET, RequestMethod.HEAD})
    public String fallback() {
         return "index";
    }
 }

以下是一些antMatchers:

             http.csrf().disable()
            .authorizeRequests()
            .antMatchers("/resources/**", "/built/**").permitAll()
            .antMatchers("/css/**").permitAll()
            .antMatchers(HttpMethod.POST, "/login").permitAll()
            .antMatchers("/registration","/about","/garages/**/*").permitAll()
            .antMatchers("/", "/home").permitAll()

当我试图达到

时,一切都很完美
  

/ registration,/ about或just /

但是当我试图获得

  

/车库/ 5

我看到空白页面并在网络标签(在Mozilla中)显示该捆绑包正在尝试从

  

http://localhost:8080/garages/built/bundle.js状态404

对于/关于页面,它看起来如下:

  

http://localhost:8080/built/bundle.js(这是正确的)。

这里是否有人能够指出我经常以某种方式忽略哪些问题导致我的问题正确重定向?

1 个答案:

答案 0 :(得分:0)

修改 如果您在resources/static文件夹中拥有静态资源,则可以使用:

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {


    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/**/*")
            .addResourceLocations("classpath:/static/")
            .resourceChain(true)
            .addResolver(new PathResourceResolver() {
                @Override
                protected Resource getResource(String resourcePath, Resource location) throws IOException {
                      Resource requestedResource = location.createRelative(resourcePath);
                      return requestedResource.exists() && requestedResource.isReadable() ? requestedResource
                    : new ClassPathResource("/static/index.html");
                }
            });
    }
}

解决方案学分和进一步解释:

https://stackoverflow.com/a/46854105