【问题标题】:Grails Routes - ignore css, js and imagesGrails Routes - 忽略 css、js 和图像
【发布时间】:2011-10-22 17:29:14
【问题描述】:

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

更新

"$username"(controller:"profile",action:"show") {
        constraints {
            username(notInList:['css','js','images'])
        }
}

我可以使用 notInList 吗?我如何反转 inList?

【问题讨论】:

  • 也无法正常工作 - 约束 { username(matches:"^css|^js|^images") }

标签: grails routing url-routing


【解决方案1】:

来自the manual:

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

class UrlMappings = {
    static excludes = ["/images/*", "/css/*"]
    static mappings = {
        …
    }
}

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

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

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

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

【讨论】:

  • 谢谢。不知道我是怎么错过的。很好奇,为什么我的代码失败了。这是我的 UrlMapping.groovy 文件中除了 500 错误路线之外的最后一条路线。约束不应该阻止它被处理。我虽然至少我的正则表达式是正确的。
  • 实际上,您的正则表达式仅匹配以css、js 或images 开头的内容。更好的正则表达式是^(?!(js|css|images)/).* - 这是与js/、css/ 或images/ 不匹配的负前瞻。但是,它允许以 js、css 或图像开始的字符串。
  • 哇,是的。不错的收获。谢谢+1 打算使用排除项。容易得多。
  • 我正在使用 Grails 3.0.1,似乎“排除”不再有效..jira.grails.org/browse/GRAILS-12041
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 2014-02-12
相关资源
最近更新 更多