我有一个Grails 2.3.6应用程序,并想知道session
变量的范围是什么?它本地可用于位于grails-app
下的任何Groovy类吗?如果没有,那么说我有一个特定的Groovy源:
MyApp的/在grails-app /部件/ COM / ME / MYORG / FizzBuzz.groovy
如何将当前session
对象提供给FizzBuzz
,以便在FizzBuzz
方法中我可以写:
class FizzBuzz {
def doSomething() {
session.foo = "true"
}
}
答案 0 :(得分:1)
你无法为任意POGO或POJO提供会话,但你可能不应该这样做。你有选择。您与FizzBuzz的交互可能追溯到可以访问会话的内容,并且可以将会话传递给调用堆栈,因此它可以作为方法参数传递到FizzBuzz实例,或者您可以采用其他方式并使用FizzBuzz返回一些内容,并且某些内容可能包含需要放入会话的数据。
你也可以像RequestContextHolder.currentRequestAttributes().getSession()
那样做一些hacky,或者在FizzBuzz上使用meta编程方法,这样就可以在FizzBuzz类中引用session
。我不认为我会推荐这个。这可能会起作用,但是你试图直接从POGO访问网页内容的事实可能暗示流程并没有按照应有的方式进行组织。
如果你详细说明你正在做什么,这将有助于提供更具体的解决方案。