Grails配置文件关闭定义

时间:2014-04-29 11:02:34

标签: grails groovy closures

我正在为grails app编写配置文件,我想在其中定义重定向模式。 我已经编写了一个配置脚本RedirectMappingsConfig.groovy:

import java.util.regex.Pattern

def c = {pattern, goto, path ->
    if (pattern instanceof Pattern && pattern.matcher(path).matches()) {
        return goto
    }
    return false
}

def redirectFromTo = [
        c.curry(Pattern.compile('/si/reference.*'), '/enterprise-solutions/references-and-partners#references'),
        c.curry(Pattern.compile('/si/kontakt.*'), '/contact-us'),
        c.curry(Pattern.compile('/si/zaposlitve.*'), '/careers'),
        c.curry(Pattern.compile('/aa'), '/')
]

此列表将在过滤器中读取,如果某些模式匹配请求uri,将执行重定向。

问题:应用程序无法编译,错误是:

Compilation error: startup failed:
RedirectMappingsConfig.groovy: 3: unexpected token: pattern @ line 3, column 10.
   def c = {pattern, goto, path ->
            ^

知道语法有什么问题吗? 我使用grails 2.1.1。

1 个答案:

答案 0 :(得分:2)

goto是Groovy中的reserved word ...将您的闭包更改为:

def c = {pattern, addr, path ->
    if (pattern instanceof Pattern && pattern.matcher(path).matches()) {
        return addr
    }
    return false
}

这个错误应该消失: - )