【问题标题】:Grails: Use regex with filterGrails:使用带有过滤器的正则表达式
【发布时间】:2017-03-24 20:52:41
【问题描述】:

我有两个 URL 地址,我为每个人过滤了它们:

all(uri: '/api/first/**')
{
    before =
}
all(uri: '/api/second/**')
{
    before =
}

我只想为两者编写一个过滤器。 所以我尝试用正则表达式编写一个过滤器:

all(uri: '\\/api\\/(first|second)\\/.*', regex: true)
{
    before =
}

但它不起作用。 我尝试了很多方法('**' / '.*' / invert: true) 但没有成功。

有人知道错误在哪里以及编写过滤器的正确方法是什么?

谢谢...

【问题讨论】:

  • 也许,您转义了表达式。试试'/api/(first|second)/.*'
  • 试过了。没用。
  • 尝试使用find 代替uriall(regex: true, find: '/api/(first|second)/.*')

标签: regex filter grails-2.4


【解决方案1】:

根据documentationuriant path,不支持正则表达式。你需要依赖find

all(regex: true, find: '/api/(first|second)/.*')
{
   before = {
       ...
   }
}

【讨论】:

  • 我不确定你是否真的需要转义/,这个符号不是特殊的正则表达式运算符,只有在用作正则表达式分隔符时才必须转义,这里没有正则表达式使用了分隔符。
  • 我从许多其他 URL 来到过滤器。我需要来自这两个地址
  • 也许你需要锚定正则表达式,比如'^/api/(first|second)/.*'。请使用更多数据更新您的问题。
猜你喜欢
  • 1970-01-01
  • 2014-11-06
  • 2012-04-22
  • 2022-08-17
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
相关资源
最近更新 更多