假设我有一个变量var1
的类。我点击按钮&它调用pageLoadMethod()
来加载页面,在里面我将var1设置为10。
现在我在页面加载后点击另一个按钮ajaxMethod()
&尝试检索var1值但不设置其值
pageLoadMethod()
方法。
Class MyClass{
def var1 = 1;
def pageLoadMethod(){
var1 = 10;
....
}
def ajaxMethod(){
println var1; // prints 1 instead of 10
}
}
答案 0 :(得分:1)
这个答案的前提是MyClass是一个控制器,我从上下文中假设。
在Grails中,默认情况下会为每个请求创建控制器实例 - 这就是为什么您没有在ajaxMethod
中看到var1的更改值。
您可以通过在控制器中添加此行来从控制器创建单例:
static scope = "singleton"
在此之后,您应该会在ajaxMethod
中看到更改后的值。
另一个问题是,如果多个用户可以同时访问您的控制器,这是一个很好的方法 - 如果您想使用该变量在用户的请求之间保存某些状态,您应该使用会话..
答案 1 :(得分:1)
我认为MyClass
是一种控制者。这个控制器的范围是什么?如果您希望在请求之间保持状态,则应使用会话范围。
http://grails.org/doc/2.4.x/guide/single.html#controllersAndScopes