grails中两个动作签名的区别

grails中两个动作签名的区别,grails,spring-security,annotations,closures,grails-plugin,Grails,Spring Security,Annotations,Closures,Grails Plugin,在grails中,我们可以使用两种方式定义操作:- def actionname() { } 及 这两种风格有什么不同?当我试图在操作(第二种样式)上方插入spring安全注释时,它说“@Secured”不适用于字段。 这是什么意思?是因为关门吗 这是一种在Groovy中以具有上述结构的最低级别定义方法的好方法 第二种定义方法不是引用方法定义,而是某种类似于规则的闭包约束,用于控制给定的类或方法。就像在域类中使用它一样 示例 class Person { String nam

在grails中,我们可以使用两种方式定义操作:-

def actionname()
{

}

这两种风格有什么不同?当我试图在操作(第二种样式)上方插入spring安全注释时,它说
“@Secured”不适用于字段
。 这是什么意思?是因为关门吗

  • 这是一种在Groovy中以具有上述结构的最低级别定义方法的好方法

  • 第二种定义方法不是引用方法定义,而是某种类似于规则的闭包约束,用于控制给定的类或方法。就像在域类中使用它一样

  • 示例

        class Person {
        String name
        Person parent
        static belongsTo = [ supervisor: Person ]
    
        static mappedBy = [ supervisor: "none", parent: "none" ]
    
        static constraints = { supervisor nullable: true }
    
        //this allowed for methods only and why you got an error in above cases
        @override
        def toString(){
           return name.toString()
         } 
    }
    
    @Secured annotation接受角色列表(字符串[])
    它仅用于基于的方法定义
    toString()
    类中的方法…我只给你一个两种情况的场景

  • 这是一种在Groovy中以具有上述结构的最低级别定义方法的好方法

  • 第二种定义方法不是引用方法定义,而是某种类似于规则的闭包约束,用于控制给定的类或方法。就像在域类中使用它一样

  • 示例

        class Person {
        String name
        Person parent
        static belongsTo = [ supervisor: Person ]
    
        static mappedBy = [ supervisor: "none", parent: "none" ]
    
        static constraints = { supervisor nullable: true }
    
        //this allowed for methods only and why you got an error in above cases
        @override
        def toString(){
           return name.toString()
         } 
    }
    
    @Secured annotation接受角色列表(字符串[])
    它仅用于基于的方法定义
    toString()
    类中的方法…我只给你两种方法的一个场景。

    第一种方法是带有未定义返回类型的普通方法定义

    第二个是对属性“actionname”的闭包赋值

    这就是为什么
    “@Secured”不适用于字段
    消息的原因,因为此注释仅用于方法


    Shuttsy认为第一种方法现在是在Grails中定义动作的首选方法,这是正确的

    第一个是未定义返回类型的普通方法定义

    第二个是对属性“actionname”的闭包赋值

    这就是为什么
    “@Secured”不适用于字段
    消息的原因,因为此注释仅用于方法

    Shuttsy认为第一种方法现在是在Grails中定义动作的首选方法,这是正确的

    Grails参考文档提到在早期版本的Grails中使用闭包进行控制器操作,现在首选使用方法。然而,这两种方法都得到了支持。它接着列出了使用方法的一些好处

    就我个人而言,我在所有控制器中都使用方法,并且在注释(如@Secured)中也遇到了这个问题,这些注释只对方法有效,而对闭包无效。

    Grails参考文档提到在早期版本的Grails中对控制器操作使用闭包,现在首选使用方法。然而,这两种方法都得到了支持。它接着列出了使用方法的一些好处


    就我个人而言,我在所有控制器中都使用方法,并且在注释方面也遇到了问题,例如@Secured,这些注释只对方法有效,而对闭包无效。

    在Grails的早期版本中,选项2(作为闭包的操作)是唯一受支持的样式。Grails 2.x引入了actions as methods样式,这是现在推荐的方法,但是闭包样式仍然支持向后兼容,如果您正在使用最初在Grails 1.x上编写的应用程序(或插件),您将看到它。

    在Grails option 2的早期版本中(actions as Closes)是唯一受支持的样式。Grails2.x引入了actions as methods样式,这是现在推荐的方法,但是闭包样式仍然支持向后兼容,如果您正在使用应用程序(或插件),您将看到它这最初是写在Grails1.x上的。

    @Secured
    注释,因为SpringSecurity2.0只支持方法。因此,如果要为闭包应用安全注释,必须将闭包转换为实方法。阅读更多。

    @securied
    注释,因为SpringSecurity2.0只支持方法。因此,如果要为闭包应用安全注释,必须将闭包转换为实方法。阅读更多信息。

    不清楚且很可能不正确,您应该改进此答案或将其删除。为什么不清楚?我举了一个例子,我们如何使用符号一个用于方法,一个用于定义其他约束,如在域类中…但我将编辑答案..谢谢你的建议…不清楚,很可能不正确,你应该改进这个答案或删除它IMHO。为什么不清楚?我已经给出了一个例子,我们如何使用符号一个用于方法,另一个用于定义其他约束,如在域类中…但我将编辑答案…谢谢你的建议。。。