Session 创建会话时在Grails中创建会话变量
我需要在创建会话时创建会话范围变量,然后再执行任何任务(因为我的所有任务都需要一个init会话范围变量才能运行)。因为,HttpSession的会话实例是在创建会话时由grails应用程序自动创建的。开发人员希望将会话用于存储会话变量,只需使用“会话”实例即可。我无法找到init session变量将放在哪里。希望有人能帮助我。谢谢您可以使用一个侦听会话创建和会话删除的Session 创建会话时在Grails中创建会话变量,session,grails,scope,initialization,Session,Grails,Scope,Initialization,我需要在创建会话时创建会话范围变量,然后再执行任何任务(因为我的所有任务都需要一个init会话范围变量才能运行)。因为,HttpSession的会话实例是在创建会话时由grails应用程序自动创建的。开发人员希望将会话用于存储会话变量,只需使用“会话”实例即可。我无法找到init session变量将放在哪里。希望有人能帮助我。谢谢您可以使用一个侦听会话创建和会话删除的HttpSessionListener 您可以将其更改为从应用程序上下文中提取: import javax.servlet.ht
HttpSessionListener
您可以将其更改为从应用程序上下文中提取:
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.codehaus.groovy.grails.commons.ApplicationHolder;
public class MySessionListener implements HttpSessionListener {
private MyListener myListener;
public void sessionCreated(HttpSessionEvent event) {
String id = event.getSession().getId();
getMyListener().sessionCreated(id);
}
public void sessionDestroyed(HttpSessionEvent event) {
String id = event.getSession().getId();
getMyListener().sessionDestroyed(id);
}
public void setMyListener(MyListener myListener) {
this.myListener = myListener;
}
private synchronized MyListener getMyListener() {
if (myListener == null) {
myListener = (MyListener)ApplicationHolder.getApplication().getMainContext().getBean("myListener");
}
return myListener;
}
}
,如果不是这样的话
还有其他方法…让我知道 我觉得这看起来很熟悉:)