Grails路由-忽略css、js和图像

Grails路由-忽略css、js和图像,grails,routing,url-routing,Grails,Routing,Url Routing,当您添加了这样的路由时,如何让UrlMappings忽略/css、/js和/images 更新 "$username"(controller:"profile",action:"show") { constraints { username(notInList:['css','js','images']) } } 我能用notInList吗?我如何反转列表?从: 如果您使用的是通配符URL映射,那么您可能希望从Grails的URL映射过程

当您添加了这样的路由时,如何让UrlMappings忽略/css、/js和/images

更新

"$username"(controller:"profile",action:"show") {
        constraints {
            username(notInList:['css','js','images'])
        }
}
我能用notInList吗?我如何反转列表?

从:

如果您使用的是通配符URL映射,那么您可能希望从Grails的URL映射过程中排除某些URI。为此,您可以在UrlMappings.groovy类中提供一个excludes设置:

这允许您从映射中排除目录

更新如果要使用正则表达式,这可能会更好:

constraints {
    username(matches:"^(?!(js|css|images)/).*")
}

此正则表达式匹配任何不以
js/
css/
images/
开头的内容。它通过零宽度负前瞻进行匹配(
(?!…)

也无法使其工作-约束{username(匹配项:“^css”^js”^images”)}谢谢。我不知道我是怎么漏掉的。奇怪的是,为什么我的代码失败了。这是我的UrlMapping.groovy文件中除了500错误路由之外的最后一个路由。约束不应该阻止它被处理。我想我至少有我的正则表达式是正确的。实际上,你的正则表达式只匹配以
css
js
,开头的东西,或者
images
。更好的正则表达式应该是
^(?(js|css|images)/).*
-这是一个消极的前瞻,与
js/
css/
images/
不匹配。它允许字符串以js、css或images开头。但是,是的。很好的捕获。感谢+1使用排除。更简单。我使用的是Grails 3.0.1,“排除”似乎不再有效。。
constraints {
    username(matches:"^(?!(js|css|images)/).*")
}