2012-03-25 14 views
5

Tengo una plantilla parcial que estoy incluyendo en mi main.gsp.Uso de una plantilla parcial en la raíz de vista

Este contenido parcial será ligeramente diferente para cada controlador/página en el sitio. Por lo tanto, tendré un _headerDetails.gsp independiente para cada directorio de vista.

Esto funciona bien a excepción de la aplicación predeterminada index.gsp. Cuando incluyo un directorio raíz _headerDetails.gsp bajo el punto de vista me sale el siguiente error:

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

¿Se griales no permite parciales en el directorio raíz?

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

Esta pregunta, y su respuesta, me ayudaron. No ve cómo está "demasiado localizado". Gracias de todos modos por la moderación excesiva. –

Respuesta

5

es headDetails o headerDetails ??

si no es un error tipográfico, intente utilizar un / antes del nombre de la plantilla para llegar al directorio raíz.

"Conceptos básicos de plantilla> Plantillas compartidas"
+1

Eso es un error tipográfico que he arreglado gotomanners. Descubierto el problema, ver respuesta. Su respuesta a medias soluciona mi problema, gracias. –

+0

Prefijo con la barra funcionó bien para mí, gracias – peterp

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

Véase el capítulo de los documentos Grails:

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" /> 
Cuestiones relacionadas