如何从Groovy POGO访问Grails“session”?

时间:2014-06-26 12:08:34

标签: session grails

我有一个Grails 2.3.6应用程序,并想知道session变量的范围是什么?它本地可用于位于grails-app下的任何Groovy类吗?如果没有,那么说我有一个特定的Groovy源:

  

MyApp的/在grails-app /部件/ COM / ME / MYORG / FizzBu​​zz.groovy

如何将当前session对象提供给FizzBuzz,以便在FizzBuzz方法中我可以写:

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

1 个答案:

答案 0 :(得分:1)

你无法为任意POGO或POJO提供会话,但你可能不应该这样做。你有选择。您与FizzBu​​zz的交互可能追溯到可以访问会话的内容,并且可以将会话传递给调用堆栈,因此它可以作为方法参数传递到FizzBu​​zz实例,或者您可以采用其他方式并使用FizzBu​​zz返回一些内容,并且某些内容可能包含需要放入会话的数据。

你也可以像RequestContextHolder.currentRequestAttributes().getSession()那样做一些hacky,或者在FizzBu​​zz上使用meta编程方法,这样就可以在FizzBu​​zz类中引用session。我不认为我会推荐这个。这可能会起作用,但是你试图直接从POGO访问网页内容的事实可能暗示流程并没有按照应有的方式进行组织。

如果你详细说明你正在做什么,这将有助于提供更具体的解决方案。