我需要在创建会话时,在任何任务执行之前准确创建会话范围变量(因为我的所有任务都需要运行init会话范围变量)。因为,在创建会话时,会由grails应用程序自动创建HttpSession的会话实例。开发人员希望将会话用于商店会话变量,只需使用' session'实例。我找不到将放置init会话变量的位置。希望有人能帮助我。感谢
答案 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 :,如果这不是
还有其他方法......让我知道!