在网址

时间:2016-11-03 14:20:43

标签: spring-boot

有了从src/main/resources/static提供静态html / css / js资源的好方法,有没有办法让某种形式的url抽象?

准确地说,我想从网址中删除.html结尾。

1 个答案:

答案 0 :(得分:0)

要返回不带扩展名的html静态文件与从任何模板引擎(jsp,theamleaf,freemarker)返回的视图名称相同,这里您无需在视图文件上运行任何模板处理,只需将其返回就这样。

在您的Spring配置中添加以下代码:

@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
    internalResourceViewResolver.setPrefix("pages/");
    internalResourceViewResolver.setSuffix(".html");
    return internalResourceViewResolver;
}

请注意/pages文件夹应位于ResourceLocation内 ,这意味着浏览器中的ResourceLocation + "/pages/" + pageName.html应该会为您提供所需的文件(如果您已经配置了对静态文件的服务,那么找到ResourceLocation就不会出现问题,请在WebMvcConfigurer中检查方法addResourceHandlers

现在,您可以在WebMvcConfigurer上添加:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("index");
    registry.addViewController("/admin").setViewName("admin");
    registry.addViewController("/contact").setViewName("contact");
    registry.addViewController("/error").setViewName("index");
}

或仅使用它,就像在MVC控制器中的常规视图解析器中使用它一样

@GetMapping("/")
public String greeting() {
    return "index";
}