Phi*_*enn 13 grails groovy grails-2.0
我目前正在阅读并使用Scott Davis和Jason Rudolph撰写的Grails入门版第二版中的示例.
这本书是用Grails 1.2编写的.
他们有一个代码示例,他们在这里创建一个debug()被调用的方法,beforeInterceptor并解释说,既然debug()是一个方法,它就不会通过URL暴露给用户.他们解释说,Closures作为Controller Actions暴露给最终用户,但方法却没有.
我还在Grails 1.3文档中看到,他们提到了常规方法:
def auth() { ... }
Run Code Online (Sandbox Code Playgroud)
被视为私有,因为它是一个方法,而不是一个闭包.从Grails 1.3开始就是如此.
但是,从Grails 2.0.0开始,Controller Actions可以作为方法和闭包实现.
这让我想知道(并试图找出)一种方法来复制Grails 2.0.0之前在Controller中创建方法时可用的功能,该方法不会暴露给最终用户.
我想到了两种可能的方法,并且想知道哪种风格/做法更好,为什么?
private def auth()为该方法设置allowedMethods以清空字符串:
static allowedMethods = [save: "POST", update: "POST", delete: "POST", auth: ""]
Run Code Online (Sandbox Code Playgroud)这两种方法似乎都达到了预期的效果.但是,第一种方法给出HTTP错误代码404,第二种方法给出HTTP错误代码405.
有谁知道哪种方法更可取?此外,还有其他方法,或"最佳实践技术"吗?
sch*_*159 15
在Grails 2.0中,任何标记为私有或受保护的方法都不被视为操作.
以这种方式标记方法会因维护原因而提供更多信息,因为它在方法声明中是可见的,方法是否可操作而不必回顾allowedMethods变量.此外,如果删除或未添加声明,则无法访问不可访问的方法allowedMethods.