作者:眼泪--保持微笑_572_205 | 来源:互联网 | 2022-12-08 11:14
我正在尝试保留所有/static/**
以资源处理程序开头的路径.不幸的是,我有一些通配符来自/
请求映射中的根路径.像这样的东西:
我尝试了什么?
ResourceHandlerRegistry#setOrder
:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/resources/static/");
registry.setOrder(1);
}
各种版本的拦截器(有或没有顺序):
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new ResourcesInterceptor())
.excludePathPatterns("/static/**")
.order(2);
}
这是一个半心半意的成功(如果我改变映射,它可能甚至不起作用/{profile}/{project}/**
),因为:
/static/style/home.css # works
/static/style/home.cssxxx # 404, works
/static/style # catched by controller, expected: 404
/static # catched by controller, expected: 404
我发现了一些类似的问题,大多数都没有答案,或者有一些肮脏的解决方案,例如:
static
通过正则表达式使用通配符手动排除每个控制器中的路径
更改您的映射
管理控制器订单
创建指向的专用控制器 /static/**
[...]
摘要:
我不想使用正则表达式,因为它将来会很痛苦
我也无法改变映射.我知道,这是最简单的方法,但我无法做到这一点.
更改订单无效
创建专用控制器仍然存在路径问题
我正在寻找一种简单的洗脱液,完全自动化,最好是配置.问题是:实现这一目标的正确方法是什么?