You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置spring.mvc.static-path-pattern后Spring Boot无法自动返回index.html

解决访问/expense/返回index.html的白标错误问题

嘿,我来帮你搞定这个静态资源访问的问题!首先咱们得搞清楚为啥会出现白标错误:你配置的spring.mvc.static-path-pattern=/expense/**确实能匹配带明确文件名的静态资源请求(比如/expense/index.html),但当你访问/expense/这种“目录式”路径时,Spring MVC默认不会自动把它映射到该路径下的index.html——它只会处理指定了具体文件名的静态资源请求,这种路径端点需要咱们手动配置转发规则。

下面给你两种可行的解决方案:

方案一:通过配置类添加视图控制器(推荐)

创建一个Spring MVC的配置类,显式把/expense/的请求转发到对应的静态资源文件:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 将/expense/的请求转发到/expense/index.html
        registry.addViewController("/expense/").setViewName("forward:/expense/index.html");
    }
}

这个配置的作用很直接:当用户访问http://localhost:8090/expense/时,Spring MVC会自动把请求转发到/expense/index.html,而根据你现有的静态资源配置,这个路径会对应到classpath:/static/expense/index.html,正好匹配你存放的页面文件。

方案二:验证静态资源位置+简化配置(辅助排查)

先确认你的index.html确实放在了正确的位置:src/main/resources/static/expense/目录下,别搞错层级了。

如果不想写配置类,也可以尝试在application.properties里添加视图前缀后缀配置,不过方案一更直接可控:

spring.mvc.view.prefix=/expense/
spring.mvc.view.suffix=.html

最后验证步骤

  1. 确认静态资源文件位置无误
  2. 应用上面的配置(优先选方案一)
  3. 重启Spring Boot应用
  4. 访问http://localhost:8090/expense/,应该就能正常加载index.html了

内容的提问来源于stack exchange,提问作者nanopotato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:19:19