在视图根下使用部分模板

时间:2012-03-25 18:48:47

标签: templates grails gsp

我有一个部分模板,我包含在我的main.gsp

对于网站上的每个控制器/页面,此部分内容略有不同。 因此,我将为每个视图目录单独_headerDetails.gsp

除默认应用程序index.gsp外,此方法正常。 当我在根视图目录下包含_headerDetails.gsp时,我收到以下错误:

org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Template not found for name [headerDetails] and path [//_headerDetails.gsp]

grails是否允许根目录中的partial?

Main.gsp

<html>
    <head>
        <g:layoutTitle/>
        <r:layoutResources/>
        <link href="${resource(dir: 'css', file: 'style.css')}" type="text/css" rel="stylesheet">
    </head>

    <body class="home">

        <div id="wrapper">

            <div id="page_top"></div>

            <div id="content">
                <g:render template="/common/header" />

                <g:render template="headerDetails" />

                <br class="clear" />

                <g:layoutBody/>

                <br class="clear" />

            </div>

            <div id="page_bottom"></div>

            <g:render template="/common/footer" />  

        </div>

        <r:layoutResources/>

   </body>
</html>

3 个答案:

答案 0 :(得分:5)

headDetails还是headerDetails

如果不是拼写错误问题,请尝试在模板名称前使用/到达根目录!

答案 1 :(得分:3)

<g:if test="${params.action.equals('')}">
  <g:render template="/headerDetails" />
</g:if>  
<g:else>
  <g:render template="headerDetails" />
</g:else>

答案 2 :(得分:1)

请参阅grails docs的“模板基础知识&gt;共享模板”一章:

http://grails.org/doc/2.0.x/guide/theWebLayer.html#viewsAndTemplates

  

在这种情况下,您可以将它们放在根视图目录中   grails-app/views或该位置下的任何子目录,然后   使用模板属性使用以/开头的绝对位置   而不是相对位置。例如,如果您有一个模板   你会这样称为grails-app/views/shared/_mySharedTemplate.gsp   将其引用为:

<g:render template="/shared/mySharedTemplate" />