2010-07-19 16 views
6

Tengo una configuración de la aplicación test grails con un contexto de "/ testapp". Cuando agrego un enlace en mi gsp que hace referencia/no va a la raíz de mi grails.app.context, sino a la raíz de mi propiedad grails.serverURL.contexto de la raíz de la aplicación de grails

Por ejemplo dado con un enlace href "/css/main.css"

yo esperaría que este enlace en realidad se vería en localhost: 8080/testapp/css/main.css en lugar de localhost: 8080/css/main.css

¿Hay alguna manera de que pueda obtener referencias a/para comenzar en mi grails.app.context vs the grails.serverURL?

Respuesta

6

la pregunta es ¿cómo agregas tus enlaces a tus gps?

Hacemos cosas como

<link rel="stylesheet" href="${resource(dir: 'css', file: 'stylesheet1.css')}"/> 

y

<g:javascript library="prototype"/> 

mediante el uso de la g: JavaScript y etiquetas de recursos y métodos, le dicen griales para establecer la ruta para usted ...

Sospecho que solo está poniendo etiquetas estándar en ...

goto

http://grails.org/doc/latest/

y, bajo las etiquetas en los nav de la mano izquierda, busque

+0

Gracias por la respuesta. Estamos utilizando las bibliotecas de etiquetas, pero tenemos una situación con una biblioteca externa que tiene un código/ruta/a/css que no podemos cambiar. Parece que tendremos que encontrar un trabajo alternativo. – ibuck

19

uso de los recursos y/o Javascript para tener una idea (es difícil de acceder directamente a los documentos ... :() el valor solicitud contextPath en la página

${request.contextPath} 

y luego se antepone la información del host adicional si es necesario para construir el URL completo

1

probablemente debería estar utilizando el código de recurso en su directorio CSS de Grails, como se mencionó anteriormente. Sin embargo, también se puede utilizar el método resource para encontrar la raíz del contexto que la aplicación web utilizando la misma etiqueta:

${resource(uri:'/')} 

continuación, sólo tiene que utilizar esa cadena donde sea.

0

Y cuando se trata de elementos como hojas de estilo me gustaría recomendar la creación de una etiqueta simple que va a hacer el truco, algo por el estilo:

class StylesTagLib { 
    static namespace = "g" 

    def stylesheet = { args, body -> 
     out << """<link rel="stylesheet" href="${resource(dir: 'css', file: args.href)}"/>""" 
    } 
} 

y más tarde en su código utilizar de esta manera:

<g:stylesheet href="main.css"/> 

Obviamente se puede jugar con las convenciones (debo usar una carpeta predefinida? debería añadir la extensión .css automáticamente? cosas por el estilo), pero la idea general es ocultar la fealdad detrás de una etiqueta muy bien definido.

6

Tuve un problema similar al de OP: ¿cómo hacer que los grails formen enlaces que comienzan en la raíz de contexto y NO en la raíz del servidor?

Puede hacerlo utilizando el atributo "uri" para las etiquetas g: link y g: createLink.Por ejemplo:

<g:link uri="/login">login</g:link> 

prefijarán cualquier contexto en su caso, y producir la siguiente

<a href="/login">login</a> if your app is at the http://server/ 
<a href="/testapp/login">login</a> if your app is at http://server/testapp/ 

No estoy seguro de por qué es un atributo undocumented en la documentación de referencia, pero lo encontré en el Javadocs - ApplicationTagLib

Cuestiones relacionadas