Spring mvc 在控制器中使用基本URL时,我的静态资源不再可用

Spring mvc 在控制器中使用基本URL时,我的静态资源不再可用,spring-mvc,spring-boot,Spring Mvc,Spring Boot,我有一个我正在创建的基本spring boot应用程序,我有一个管理员控制器,它会给我一个/admin/的URL。我的问题是,这个URL会改变我访问静态资源的方式,方法是在URL前面加上/admin前缀,而不是只使用/ 如何使我的静态资源仍然可以从/admin/**URL访问,就像它们从/**URL访问一样 返回错误的请求示例: 得到 上述请求不适用于此请求: 得到 但我不知道一个好的动态解决方案来删除Thymeleaf或Spring中的前缀。我真的不想在每个HTML页面上添加不同的内容 如何访

我有一个我正在创建的基本spring boot应用程序,我有一个管理员控制器,它会给我一个/admin/的URL。我的问题是,这个URL会改变我访问静态资源的方式,方法是在URL前面加上/admin前缀,而不是只使用/

如何使我的静态资源仍然可以从/admin/**URL访问,就像它们从/**URL访问一样

返回错误的请求示例: 得到

上述请求不适用于此请求: 得到

但我不知道一个好的动态解决方案来删除Thymeleaf或Spring中的前缀。我真的不想在每个HTML页面上添加不同的内容

如何访问HTML页面上的资源:

    <link href="../../static/css/bootstrap.min.css"
      th:href="@{css/bootstrap.min.css}" rel="stylesheet"/>
}

我将此添加到我的WebMVCConfigureAdapter以尝试修复此问题:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**","/admin/**")
            .addResourceLocations("/resources/");
}

任何帮助都将不胜感激!希望这是一个简单的解决方案。

答案在Thymeleaf href中

    <link href="../../static/css/bootstrap.min.css"
  th:href="@{css/bootstrap.min.css}" rel="stylesheet"/>

要对此进行一些更改:

  • 不需要第二个href,只需要th:href
  • th:href需要更改为“服务器相对”版本,该版本在th:href链接之前完成
我的代码现在是这样的:

    <link th:href="@{~/css/bootstrap.min.css}" rel="stylesheet"/>

我在整个应用程序中都改变了这一点,它适用于所有不同的URL。无论请求URL是什么,带前缀的~都将使您的资源动态加载到从服务器返回的任何页面

更多信息请点击此处:

    <link th:href="@{~/css/bootstrap.min.css}" rel="stylesheet"/>