在布局中设置变量并在模板中访问它

时间:2016-03-07 15:21:36

标签: grails

我在grails-app / views / layout / main.gsp中将一个变量设置为一个值,比如

<g:set var="welcometext" scope="session">Hello, pleased to meet you!</g:set>

但是当我尝试在我的视图grails / app / views / index.gsp中使用

访问它时
<html>
<head>
  <meta name="layout" content="main"/>  
</head>

${welcometext}

<body>
</html>

什么都没打印出来。因此,我的视图index.gsp无法访问main.gsp中设置的变量。我还尝试将范围设置为页面,请求和会话,但是成功。

如何在布局main.gsp中设置变量并在其他视图中引用它?

1 个答案:

答案 0 :(得分:1)

您可以在页面中定义变量( index ),您的布局可以看到它们(例如,这对于痕迹导航非常有用)。 但是,您无法从页面( index )访问布局中定义的变量,因为页面的呈现方式与没有布局相同,然后我们将布局应用于呈现的页面。

作为一种快捷方式,你可以看到这样的渲染流程:(渲染索引)那么(渲染布局)

因此,在您的情况下,您必须找到另一种解决方案,具体取决于您的内容:

  • 将welcometext放入会话(不是最佳解决方案)
  • 将其作为每个视图的参数传递(不是最佳解决方案)
  • 创建自定义tag以自动打印
  • 创建模板并将其呈现在您需要的位置
  • 硬编码吗? (我不喜欢这个,但它更接近你想要做的事情)
  • 使用JavaScript添加文字?
  • ...

试着看看哪一个最适合你;)