在grails中设置全局变量

时间:2014-12-31 04:49:47

标签: grails

我在gsp中有一个文本字段,位于main.gsp中,该字段应始终填充一个简单的数据库查询,该查询返回一个值。

我想在全球范围内设置它,不受页面访问的影响。

应该为用户会话设置。如何全局设置该字段的值。

请帮忙。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用Grails控制器中的ServletContext全局设置变量

def mySetting = servletContext["mySetting"]

servletContext["mySetting"] = "foo"

然后您可以访问任何gsp

<g:set var="someName" value="${application["mySetting"]}"/>

现在您可以将someName用作常规变量。

答案 1 :(得分:0)

您可以将<g:set>session范围一起使用。

<g:set var="foo" value="bar" scope="session" />

如果您正在寻找数据库访问,更好的实现方法是将服务设置为变量,并在服务bean上调用一个方法来调用db:

<g:set var="someService" bean="someService"/>
<g:set var="foo" value="${someService.makeDBCall()}" scope="session" />

在任何一种情况下,都不鼓励从gsp调用持久层。您可以尝试filters并在会话中设置值。