2014-03-28 155 views
0

在任何任務執行之前(因爲我的所有任務都需要一個init會話範圍變量才能運行),我需要在創建會話時準確創建會話範圍變量。因爲,HttpSession的會話實例是在創建會話時由grails應用程序自動創建的。開發者希望使用會話來存儲會話變量,只需使用'會話'實例。我無法找到init會話變量的放置位置。希望有人能幫助我。謝謝創建會話時在Grails中創建會話變量

回答

1

你可以做的是有一個HttpSessionListener監聽會話創建和會話刪除。

OU可以改變它從應用程序上下文拉:

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 :,如果這並不

還有其他方法......讓我知道!

+3

我以爲看上去很熟悉:) –

+0

是的:參考:) – danielad