我在gsp中有一个文本字段,位于main.gsp中,该字段应始终填充一个简单的数据库查询,该查询返回一个值。
我想在全球范围内设置它,不受页面访问的影响。
应该为用户会话设置。如何全局设置该字段的值。
请帮忙。
由于
答案 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
并在会话中设置值。