Session “如何访问Grails”;会议“;来自Groovy POGO?

Session “如何访问Grails”;会议“;来自Groovy POGO?,session,grails,Session,Grails,我有一个Grails2.3.6应用程序,想知道会话变量的范围是什么?它本机是否可用于位于grails app下的任何Groovy类?如果没有,那么就说我有一个特定的Groovy源代码: myapp/grails-app/widgets/com/me/myorg/FizzBuzz.groovy 如何使当前的会话对象可用于FizzBuzz,以便在FizzBuzz方法中写入: class FizzBuzz { def doSomething() { session.foo =

我有一个Grails2.3.6应用程序,想知道
会话
变量的范围是什么?它本机是否可用于位于
grails app
下的任何Groovy类?如果没有,那么就说我有一个特定的Groovy源代码:

myapp/grails-app/widgets/com/me/myorg/FizzBuzz.groovy

如何使当前的
会话
对象可用于
FizzBuzz
,以便在
FizzBuzz
方法中写入:

class FizzBuzz {
    def doSomething() {
        session.foo = "true"
    }
}

您不能真正使会话可用于任何任意的POGO或POJO,但您可能无论如何都不应该这样做。你有选择的余地。您与FizzBuzz的交互可能追溯到确实可以访问会话的某个对象,该对象可以将会话向下传递到调用堆栈,从而将其作为方法参数传递到FizzBuzz实例,或者您也可以反过来让FizzBuzz返回某个对象,该对象可能包含需要修改的数据举行会议

你也可以做一些像
RequestContextHolder.currentRequestAttributes().getSession()
,或者将一个方法元编程到FizzBuzz上,这样在FizzBuzz类中你只需要引用
session
。我不认为我会推荐那样做。这是可以实现的,但您试图直接从POGOs访问web内容的事实可能暗示了流的组织方式并没有达到应有的水平


如果您能详细介绍一下您正在做的事情,这将有助于提供更具体的解决方案。

谢谢@Jeff Scott Brown(+1)-我需要在
FizzBuzz
中导入什么才能访问
RequestContextHolder
?那么
getSession()
setXYZ()
方法会关闭什么呢?类似于
getSession().setFoo(“true”)
?再次感谢<代码>导入org.springframework.web.context.request.RequestContextHolder。关于
getXYZ
getFoo
的问题的第二部分对我来说没有意义。祝你好运。