2012-02-09 27 views
2

我想输出一个在全部模板中都是全局的值,甚至是在Grails中的布局,就像Django的上下文处理器一样,您可以在上下文处理器中渲染上下文并将其用作模板中的全局变量。在Grails中是否有Django的上下文处理器?

在Grails中有这样的概念吗?而且,我如何在布局中使用它?

+1

我也想知道这一点。 Grails中最接近Django的上下文处理器的是什么? – 2012-08-29 10:51:41

+0

如果它存在,这将是一个令人难以置信的有用功能。我不知道任何普遍注入GSP的东西甚至可以与之比较。 – 2012-09-11 12:35:56

+0

或者,也许这就是你正在寻找http://stackoverflow.com/questions/1728021/adding-a-variable-to-all-views-in-grails?rq=1 – mingus5000 2012-10-15 14:08:21

回答

-3

我根本不熟悉Django。在google中查了一下Django的上下文处理器,我想我明白了。基本上它配置注入每个模板的可重用数据?无论如何,就我所知,Grails中并不存在这样的事情。您可以尝试以下方法作为解决方法。

使用的ApplicationContext

每个视图访问ApplicationContext的。因此,创建一个包含所有需要的数据的服务,假设它叫做fooService,并且您想要的数据项是名为bar的服务中的一个字段(当然也可能是一种方法)。然后在你的视图中做$ {applicationContext.fooService.bar}。在视图中访问applicationContext的资源:http://mrhaki.blogspot.com/2011/11/grails-goodness-get-grailsapplication.html

使用您的布局

我不知道这一个,所以在你自己的风险。最上面的一个当然非常详细。以不同的观点一遍又一遍地打电话会很烦人。相反,调用它一次,并使用g:set将其设置为布局中的变量。我认为这个变量在每个使用该布局的视图中都是可用的......但是不确定。这里是g的文档:set - >http://grails.org/doc/latest/ref/Tags/set.html

如果我没有得到什么上下文处理器在Python中做什么,我很乐意再试一次...

+0

或者你可以使用控制器拦截器:http ://grails.org/doc/2.1.0/ref/Controllers/afterInterceptor.html。只需让每个控制器扩展一个基本的控制器,添加所有必要的变量 – mingus5000 2012-10-15 14:01:46

相关问题