2012-03-25 5 views
5

Ich habe eine teilweise Vorlage, die ich in meinem main.gsp einschließen.Verwenden partielle Vorlage unter Ansicht root

Dieser Teilinhalt ist für jeden Controller/jede Seite auf der Site leicht unterschiedlich. Daher werde ich eine separate _headerDetails.gsp für jedes View-Verzeichnis haben.

Dies funktioniert gut, außer für die Standardanwendung index.gsp. Als ich gehören ein _headerDetails.gsp unter Stammansicht Verzeichnis ich die folgende Fehlermeldung erhalten:

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

Hat grails nicht partials im Stammverzeichnis erlauben?

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> 
+0

Diese Frage und die Antwort, hat mir geholfen. Nicht zu sehen, wie es "zu lokalisiert" ist. Danke trotzdem für Übermüdung. –

Antwort

5

ist es headDetails oder headerDetails ??

Wenn es sich nicht um ein Tippfehler handelt, versuchen Sie es mit einem / vor dem Vorlagennamen, um zum Stammverzeichnis zu gelangen!

+1

Das ist ein Tippfehler, den ich Gotomanners behoben habe. Habe das Problem herausgefunden, siehe Antwort. Deine Antworthälfte behebt mein Problem, danke. –

+0

Prefixing mit dem Schrägstrich funktionierte gut für mich, danke – peterp

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

Siehe Kapitel "Template-Grundlagen> Gemeinsame Vorlagen" der grails docs:

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

In this case you can place them in the root views directory at grails-app/views or any subdirectory below that location, and then with the template attribute use an absolute location starting with / instead of a relative location. For example if you had a template called grails-app/views/shared/_mySharedTemplate.gsp , you would reference it as:

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