Groovy:使用Grails和Spring安全核心插件时的意外令牌

时间:2014-07-25 23:01:23

标签: grails groovy spring-security grails-plugin grails-2.0

我需要向Grails添加Spring Security核心。 我已将spring core安全插件添加到grails 2.3.8 app中, 使用:BuildConfig.groovy 插件{ ... 编译":spring-security-core:2.0-RC4" ...

然后 s2-quickstart sim GUser GRole

文件GUserGRole.groovy包含以下错误:

Groovy:意外令牌:验证器@第82行,第9列。 此行有多个标记      - Groovy:期待EOF,发现'如果' @ 83行,      第4栏。      - Groovy:意外的令牌:if @ line 83,      第4栏。

对应于以下代码:

static constraints = {
    GRole validator: { GRole r, GUserGRole ur ->
        if (ur.GUser == null) return
        boolean existing = false
        GUserGRole.withNewSession {
            existing = GUserGRole.exists(ur.GUser.id, r.id)
        }
        if (existing) {
            return 'userRole.exists'
        }
    }
}

如何解决这个问题? 如何将Spring Security核心干净地添加到Grails?

3 个答案:

答案 0 :(得分:1)

s2quick-start使用GrailsNameUtils.getPropertyNameRepresentation为您的域类生成实例字段。使用将生成合适字段名称的名称,否则字段名称和类名称相同。

 //This is fine - generates 'user'
 GrailsNameUtils.getPropertyNameRepresentation("User") 

 //This is fine - generates 'myUser'
 GrailsNameUtils.getPropertyNameRepresentation("MyUser")

 //Not fine. Generates 'GRole' which is same as your class name
 GrailsNameUtils.getPropertyNameRepresentation("GRole")

答案 1 :(得分:0)

一个问题是GRole validatorvalidator之前的事物应该是受约束的属性的名称,而不是类型。如果属性名为gRole,则代码应为gRole validator。这个属性真的叫GRole吗?如果是这样,那可能会有问题。

答案 2 :(得分:0)

请查看此处的讨论Groovy: Unexpected token ":"

由于代码是自动生成的,因此您应手动更正类变量的名称并将其更改为" GRole GRole" to" GRole gRole"。