Session 如何在grails中的域类中使用会话

Session 如何在grails中的域类中使用会话,session,grails,Session,Grails,我想在表中存储loggedInUser。所以我使用session访问loggedInUser,但我得到的错误是这个类没有这样的属性session。如何在域中使用会话 class GenderAudit { String name User doneBy def GenderAudit(Gender gender,String operation) { this.name=gender.name this.doneBy = se

我想在表中存储loggedInUser。所以我使用session访问loggedInUser,但我得到的错误是这个类没有这样的属性session。如何在域中使用会话

class GenderAudit {


    String name
    User doneBy

    def GenderAudit(Gender gender,String operation)
    {
        this.name=gender.name
        this.doneBy = session.loggedInUser

    }
}

域类不应该知道关于HTTP层的任何信息。设置有权访问该数据的服务或控制器的值


另外,请注意,这样定义一个构造函数很好,但是您还必须为Hibernate定义一个无参数构造函数,因为它会创建新的空实例并调用setter。一般来说,我们在Grails中不使用参数化构造函数,因为Groovy添加的映射构造函数非常方便。

域类不应该知道关于HTTP层的任何信息。设置有权访问该数据的服务或控制器的值


另外,请注意,这样定义一个构造函数很好,但是您还必须为Hibernate定义一个无参数构造函数,因为它会创建新的空实例并调用setter。一般来说,我们在Grails中不使用参数化构造函数,因为Groovy添加的映射构造函数非常方便。

在控制器或服务中使用代码

new GenderAudit(name:gender.name, doneBy: session.loggedInUser).save()

我同意伯特·贝克维思的观点。从域类中删除所有构造函数。

在控制器或服务中使用代码

new GenderAudit(name:gender.name, doneBy: session.loggedInUser).save()

我同意伯特·贝克维思的观点。从域类中删除所有构造函数。

但我必须维护该类的构造函数。正如您在另一篇文章中所说,我使用了这个RequestContextHolder.currentRequestAttributes()会话。这很好。非常感谢您,但是我必须维护这个类的构造函数。正如您在另一篇文章中所说,我使用了这个RequestContextHolder.currentRequestAttributes()会话。这很好。非常感谢你,伯特