我想在src / groovy类中的函数A()内的session中设置一个值,并在同一个src / groovy类中的函数B()中使用该值。那可能吗?我无法在函数之间传递值,因为它们被覆盖了。我引用了这个link,但对实现并不十分了解。提前致谢。 编辑:这里函数A是crawler4j的访问函数,函数B是handlePageStatusCode()
答案 0 :(得分:5)
您引用的链接是要走的路 - 静态方法RequestContextHolder.getRequestAttributes()
将为您提供属于当前正在执行的请求的GrailsWebRequest
实例,或者null
你在一个没有运行控制器动作的线程上调用它。获得GrailsWebRequest
后,您可以从那里访问会话,请求,响应,参数和闪存(通过getFlashScope()
)。
答案 1 :(得分:1)
很难理解你在这里想要实现的目标。在HTTP请求期间,会话仅对连接用户有意义。如果您正在使用src / groovy类,例如在控制器中,您可以将会话作为方法的参数传递给您的方法。否则你将如何使用它?
答案 2 :(得分:1)
我创建了一个小实用程序Java类来处理在src / groovy,src / java或grails-app / services等地方访问会话。您可以尝试使用它:
public class SessionUtil {
/**
* Returns the current session. This can be used in classes where the session variable is not set by Grails, such as Services.
* @return the session
*/
public static GrailsHttpSession getSession() {
return WebUtils.retrieveGrailsWebRequest().getSession();
}
}
要使用它,无论你需要什么会话,你都会写:
def session = SessionUtil.getSession()