我们可以通过servletContext(或grailsApplication)访问Grails BootStrap中的HttpSession吗?当用户登录到应用程序时,我在会话中存储了一些信息,并在动态方法beforeInsert中使用它们。但我不知道如何在会话中检索这些信息 这是我的Bootstrap代码:
class BootStrap {
def grailsApplication
def init = { servletContext ->
grailsApplication.getArtefacts("Domain").each { org.codehaus.groovy.grails.commons.GrailsDomainClass gc ->
gc.metaClass.beforeInsert = {
// Do something here with information stored in session
}
gc.metaClass.beforeUpdate = {
// Do something here with information stored in session
}
}
}
def destroy = {
}
}
非常感谢
答案 0 :(得分:0)
不,因为servlet上下文有多个会话。会话是按用户进行的,而上下文是全局的。所以范围不匹配。
您可以做的是拥有一个HttpSessionListener
来监听会话创建和会话删除。我猜你可以以某种方式访问服务器关闭后序列化到磁盘的会话,但这需要你干扰本机tomcat实现(可能是一些Valve)