grails - 将实例变量添加到Controller是否错误?

标签 grails scope grails-controller

如果我想在一个 Controller 的多个方法之间共享一个对象,那么创建实例var是否错误?例如。

class MyController {
    def index() {
        def user = verifyUserLogin()
        [messages:getMessages(user)]
    }

    private verifyUserLogin() {
        ...
        return user
    }

    private getMessages(user) {
        ...do something with `user`...
        return messages
    }
}

会成为
class MyController {
    private user

    def index() {
        verifyUserLogin()
        [messages:getMessages()]
    }

    private void verifyUserLogin() {
        ...
        this.user = user
        return
    }

    private getMessages() {
        ...do something with `user`...
        return messages
    }
}

最佳答案

Grails Controller 并不是为每个请求创建的,因此没有实例级变量是没有问题的。

但是,我个人不希望尽可能不声明实例级别的变量,因为当代码开始变得冗长时,很难弄清初始化和使用变量的代码流程。

我宁愿选择将它们作为参数传递。但是,没有这样的经验法则,它在很大程度上取决于当前的问题。

关于grails - 将实例变量添加到Controller是否错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833113/

相关文章:

grails - 如何使用GORM在Grails 2.4.4中动态创建列

rest - 结合使用JSON和Grails来使用REST API

java - @PostConstruct 不要调用 session 托管 bean

grails - Grails集成测试 Controller 不能重复使用?

grails - 域类 hasMany 添加条目失败

grails - 生成的 Controller 的更新方法中的version参数是什么

maven - 如何在Nexus上使用GrailsCentral

grails - Slf4j 注释可以在 Grails 中工作吗?

php - 如何在 Codeigniter 的 View 范围内取消设置变量

javascript - 需要调用一个已经失去作用域的函数