如何使用ResourceHandlerRegistry和Spring MVC映射单个文件?

时间:2013-09-12 19:22:42

标签: java spring-mvc

我有一个Spring MVC应用程序,我在其中定义了一个静态资源haandler:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (resourceIdentifier != null) {
        registry.addResourceHandler("/admin-ui/**", "/admin-ui/").addResourceLocations(
                "file:" + resourceIdentifier.getResourcesLocation() + "/");
    }
}

(为简洁起见,我已经省略了HandlerInterceptor声明的其余部分。)

现在,该应用程序的主要入口点是:

https://foo.mysite.com/admin-ui/index.html

相反,我希望输入点为:

https://foo.mysite.com/admin-ui

目前,这会产生404错误。启用此功能的最简单方法是什么,最好使用ResourceHandlerRegistry

1 个答案:

答案 0 :(得分:0)

我添加了以下控制器,它部分工作:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("admin-ui").setViewName("/admin-ui/index.html");
}

我需要在我的应用中进行一些其他更改,因为其他资源(例如,css,js和模板文件)是相对于index.html访问的(即,没有admin-ui/作为其中一部分路径)。我需要将其更改为服务器根目录的绝对路径,例如在index.html:

<link href="css/bootstrap.min.css" rel="stylesheet">

成了这个:

<link href="/admin-ui/css/bootstrap.min.css" rel="stylesheet">

对应用中的所有网址执行此操作后,我现在可以使用或不使用index.html来访问该应用。