BootStrap.groovy中的语法错误

时间:2012-07-29 14:07:35

标签: grails groovy spring-security

我正在使用带有SpringSecurity插件的Grails。我运行s2-quickstart所以用户域类 被命名为“User.groovy”,角色域类被命名为“Role.groovy”。因此,映射类被命名为“UserRole.groovy”。 然后我修改了BootStrap.groovy以创建一个示例用户,这导致了一个令人讨厌的语法错误“Groovy:意外令牌:UserRole @第19行,第2列”。在调用“UserRole.create”时。

这是我的BootStrap.groovy文件:

import com.foo.Role
import com.foo.User
import com.foo.UserRole


class BootStrap {

    def springSecurityService

    def userSecRole = Role.findByAuthority("ROLE_USER") ?: new Role()(authority: "ROLE_USER").save()

    def user = new User(
        username: "user",
        password: springSecurityService.encodePassword("user"),
        enabled: true
        )


    UserRole.create user, userSecRole     // <--- This is where the error happens


    def init = { servletContext ->
    }
    def destroy = {
    }
}

1 个答案:

答案 0 :(得分:2)

您已将代码放在主类定义中。

该代码应位于init闭包内,即:

import com.foo.Role
import com.foo.User
import com.foo.UserRole

class BootStrap {

    def springSecurityService

    def init = { servletContext ->
      def userSecRole = Role.findByAuthority("ROLE_USER") ?: new Role()(authority: "ROLE_USER").save()

      def user = new User(
          username: "user",
          password: springSecurityService.encodePassword("user"),
          enabled: true
          )

      UserRole.create user, userSecRole     // <--- This is where the error happens
    }
    def destroy = {
    }
}