spring - Spring Controller 映射值正则表达式
问题描述
我有一个弹簧控制器方法
@GetMapping(value = {"{name}"})
public String index(ModelMap model, @PathVariable Optional<String> name)
除了包含句点的任何内容外,我希望所有内容都通过此方法。所以类似的东西/main.css
会被拒绝,而类似的东西/maincss
会被允许。有什么办法可以做到吗?
我知道我可以简单地将我的所有资源文件移动到资源路径/resources/main.css
,并且问题得到解决,或者我可以更改代码,以便我有两种方法,一种是 for /
,另一种是 for /name/{name}
。但出于教育目的,我想知道是否可以让控制器适用于除某个正则表达式之外的所有内容。例如,如果我希望控制器接受除包含单词 Norris 的字符串之外的所有内容。
反正有没有应用正则表达式或某种规则来映射值?
解决方案
您可以使用格式varName:regex
(其中冒号“:”是两者之间的分隔符)来指示要对变量使用的正则表达式检查:
@GetMapping(value = {"{name:^((?!Norris).)*$}"})
public String index(ModelMap model, @PathVariable Optional<String> name)
但是,由于您的问题可能与资源有关:
我知道我可以简单地将所有资源文件移动到 /resources/main.css 等资源路径
您还可以尝试配置 aResourceHandlerRegistry
或 aResourceResolver
以将某些文件(模式)排除在资源之外。更多关于资源处理的信息可以在这里找到。
推荐阅读
- django-forms - 如何更改 django 表单的语言
- python - 美汤解析页表问题
- android - ViewPager onPageSelected 函数在布局初始化之前被触发
- linux - 如何在 Linux 上的文件之间移动映射页面?
- apache-spark - 如果通过 Zeppelin 0.8.1 运行,Spark 作业会在集群上的 df.show() 上挂起
- python - 尝试将卷绑定到 docker 容器
- css - Polymer 3 LitElement PWA 无法使用 css mixin 设置 Polymer Element 样式
- google-cloud-platform - 过去几天二进制日志大幅增长,但行为没有变化
- javascript - 如何在 jquery 选项卡中为 addclass 设置动画?
- javascript - 无法从电子邮件输入中获取值