在src / groovy中使用session

时间:2014-07-17 16:05:06

标签: function session grails groovy

我想在src / groovy类中的函数A()内的session中设置一个值,并在同一个src / groovy类中的函数B()中使用该值。那可能吗?我无法在函数之间传递值,因为它们被覆盖了。我引用了这个link,但对实现并不十分了解。提前致谢。 编辑:这里函数A是crawler4j的访问函数,函数B是handlePageStatusCode()

3 个答案:

答案 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()