布局中设置的GSP变量在页面中不可见

时间:2014-12-08 17:06:52

标签: grails gsp

我在" main"中设置了一些GSP变量。我的Grails应用程序的布局文件(包含在下面)。这些变量的值似乎无法在sitemesh呈现的GSP页面中访问。此外,它们在标记呈现的任何模板中都不可见。我试过设置范围="请求" (参见下面的代码),但这似乎没有任何区别。我显然不理解GSP变量的范围规则。

任何人都可以澄清GSP变量的范围,并就如何将它们从布局一直传达到模板(如果我可以的话)提出建议。

<!DOCTYPE html>
<%-- <html lang="${org.springframework.web.servlet.support.RequestContextUtils.getLocale(request).toString().replace('_', '-')}"> --%>
<html lang="${session.'org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE'}">

<head>
    <title><g:layoutTitle default="${meta(name:'app.name')}" /></title>

    <meta charset="utf-8">
    <meta name="viewport"       content="width=device-width, initial-scale=1.0">
    <meta name="description"    content="">
    <meta name="author"         content="">

    <asset:javascript src="bootstrap.js" />
    <theme:load />
    <asset:javascript src="application.js" />
    <asset:stylesheet src="application.css" />
    <asset:link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />

    <g:layoutHead />

    <%-- Defineform body layout column dimensions. These values are used by Bootstrap based forms to 
         layout using configured column widths and offsets. --%>
    <g:set var="labelWidth" value="${grailsApplication.config.ark.layout.labelWidth ?: 'col-sm-3'}" scope="request" />         
    <g:set var="controlWidth" value="${grailsApplication.config.ark.layout.controlWidth ?: 'col-sm-4'}" scope="request" />
    <g:set var="controlOffset" value="${grailsApplication.config.ark.layout.controlWidth ?: 'col-sm-offset-3'}" scope="request" />

    <%-- For Javascript see end of body --%>
</head>

<body>
    <g:render plugin="arkUi" template="/layouts/menu/navbar"/>
    <g:render plugin="arkUi" template="/layouts/content"/>
    <g:render plugin="arkUi" template="/layouts/footer"/>

    <!-- Include deferred Javascript files and other resources -->
    <asset:deferredScripts/>
</body>

</html>

1 个答案:

答案 0 :(得分:2)

这里的问题是Grails首先解析目标GSP页面(除其他外)确定使用哪个布局,然后解析布局GSP并将它们组合起来。因此布局可以看到您在页面中设置的变量,但反之亦然。