我需要向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?
答案 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 validator
。 validator
之前的事物应该是受约束的属性的名称,而不是类型。如果属性名为gRole
,则代码应为gRole validator
。这个属性真的叫GRole
吗?如果是这样,那可能会有问题。
答案 2 :(得分:0)
请查看此处的讨论Groovy: Unexpected token ":"?
由于代码是自动生成的,因此您应手动更正类变量的名称并将其更改为" GRole GRole" to" GRole gRole"。