Grails Spring安全注释应为内联常量

Grails Spring安全注释应为内联常量,grails,spring-security,Grails,Spring Security,当我试图在@Secured annotation外部定义我的字符串时,grails中的错误如下 我得到以下错误 Role.USER'是java.lang.String类型的内联常量,而不是@grails.plugin.springsecurity.annotation.securied中的属性表达式 class Role { final static String USER = "ROLE_USER" final static String ADMIN = "ROLE_ADMIN

当我试图在@Secured annotation外部定义我的字符串时,grails中的错误如下

我得到以下错误 Role.USER'是java.lang.String类型的内联常量,而不是@grails.plugin.springsecurity.annotation.securied中的属性表达式

class Role {
    final static String USER = "ROLE_USER"
    final static String ADMIN = "ROLE_ADMIN"


    public final static String[] LOGINED_USER = [USER, ADMIN].asImmutable()

}
下面的例子说明了我的问题

class MyController {

    @Secured(["permitAll"]) //Works fine
    def action1() {
    }


    @Secured(LOGINED_USER) //Doesn't work
    def action2() {
    }

    @Secured([Role.ADMIN, Role.USER]) //Doesn't work
    def action3() {
    }


    @Secured(["ROLE_ADMIN", "ROLE_USER"]) //Works fine
    def action4() {
    }
}

您必须显式地公开用户和管理常量,添加
public
修饰符

public final static String USER = "ROLE_USER"
public final static String ADMIN = "ROLE_ADMIN"

在这种情况下,Groovy将不使用注释中不允许的
geters
setter

您必须显式地公开用户和管理常量,添加
public
修饰符

public final static String USER = "ROLE_USER"
public final static String ADMIN = "ROLE_ADMIN"

在这种情况下,Groovy不会使用注释中不允许使用的
geters
setter

请看,我相信您可以使用:
@Secured(value=Role.ADMIN)
不。。和以前一样的问题。问题是groovy到java。。。正如groovy制作get和set一样。我相信您可以使用:
@Secured(value=Role.ADMIN)
Nope。。和以前一样的问题。问题是groovy到java。。。随着groovy的生成和设置。