从 Spring 控制器回退以响应应用程序



我尝试了很多解决方案,堆栈溢出是我最后一个可以问我的问题的地方。我已经在后端创建了带有 Spring 启动的应用程序,该应用程序也为我的前端提供服务。我的主控制器如下所示

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

这里有一些蚂蚁匹配者:

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

当我试图达到时,一切都很完美

/注册,/关于或只是/

但是当我试图得到

/

车库/5

我看到空白页面,在网络选项卡(在 mozilla 中(中,它显示捆绑包正在尝试从中获取

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

对于/about 页面,它如下所示:

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

这里有人能够指出我经常以某种方式省略的任何问题,这些问题会导致我的正确重定向问题?

编辑如果您的静态资产位于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

最新更新