创建会话时在Grails中创建会话变量

时间:2014-03-28 10:21:43

标签: session grails scope initialization

我需要在创建会话时,在任何任务执行之前准确创建会话范围变量(因为我的所有任务都需要运行init会话范围变量)。因为,在创建会话时,会由grails应用程序自动创建HttpSession的会话实例。开发人员希望将会话用于商店会话变量,只需使用' session'实例。我找不到将放置init会话变量的位置。希望有人能帮助我。感谢

1 个答案:

答案 0 :(得分:1)

您可以做的是拥有一个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;
}
}

Reference Here :,如果这不是

还有其他方法......让我知道!