2012-03-25 15 views
5

Ho un modello parziale che sto includendo nel mio main.gsp.Utilizzo del modello parziale sotto root vista

Questo contenuto parziale sarà leggermente diverso per ogni controller/pagina sul sito. Quindi avrò uno _headerDetails.gsp separato per ogni directory di visualizzazione.

Questo funziona bene tranne l'applicazione predefinita index.gsp. Quando includo una directory _headerDetails.gsp sotto vista radice ottengo il seguente errore:

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

Vuol graal non consentono parziali nella directory root?

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

Questa domanda, e la sua risposta, mi ha aiutato. Non riesci a vedere come è "troppo localizzato". Grazie comunque per la moderazione eccessiva. –

risposta

5

è headDetails o headerDetails ??

se non è un errore di battitura, provare a utilizzare un / prima del nome del modello per arrivare alla directory principale!

"basi dei modelli> Modelli condivisi"
+1

Questo è un errore di battitura che ho risolto con i getomanners. Capito il problema, vedi risposta. La tua risposta metà risolve il mio problema, grazie. –

+0

Il prefisso con la barra ha funzionato bene per me, grazie – peterp

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

veda il capitolo dei Grails documenti:

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" /> 
Problemi correlati