2011-03-15 12 views
5

Mi baseUrl es http://localhost:8080/whatever. En otras máquinas, es http://localhost/whatever.Grails obtener guerra baseUrl inteligentemente?

¿Hay una manera inteligente de obtener esta información sin necesidad de utilizar

<% 
    String baseUrl = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() 
%> 

Estoy intentando crear dinámicamente algunos enlaces a camino de URLs resto parametrizado, es decir:

http://localhost:8080/a/b/${param1}/c/${param2}

Si hay una mejor manera de hacer esto, házmelo saber.

Respuesta

6

En caso de que lo olvide, no fue respondido en la pregunta here. Simplemente configure grails.serverURL y grails.app.context en el archivo de configuración de su máquina implementada. Luego use createLink para hacer la URL. O me perdí algo?

+0

No te perdiste nada. Sabía que este camino tenía que existir en alguna configuración EN ALGÚN LUGAR. Me perdí completamente esto en Config.groovy –

0

la etiqueta <g:link> acepta un parámetro, "absolute = true", que construirá una URL que respete el serverUrl y contextPath del entorno actual. Recomiendo combinar eso con un named URL mapping para construir su URL.

Si no es capaz de construir toda su URL de la página en tiempo de presentación, Griales todavía pueden construir parte de la URL para usted:

var url = '${g.createLink(absolute: true, mapping: "mymappingname")}/' + param1 + '/c/' + param2; 
console.log(url); // "http://localhost:8080/whatever/a/b/something/c/somethingelse" 

Y en UrlMappings.groovy:

class UrlMappings { 

name mymappingname: "https://stackoverflow.com/a/b/$param1?/c/$param2?" { 
     controller = 'myRestHandler' 
    } 
} 
+0

Los enlaces están parametrizados con javascript, por lo que este método no funcionará. –

+0

Luego puede usar url como base para sus URL javascript. – Blacktiger

+0

Esto todavía no funciona./c/es en realidad múltiples asignaciones dinámicas diferentes, y la URL base para "/" está asignada al archivo Necesito la baseUrl, por lo que el nombre de esa asignación no sirve de nada. –

0

I resolver usando CreateLink (acción: 'índice', el controlador: 'raíz', params: [id: id], absoluto: true)

4

Esta solución no requiere grails.serverURL a ajustar:

<g:createLink absolute='true' uri='/WHATEVER'/> o

${g.createLink(absolute:true, uri:"/WHATEVER")}

generará:

http://HOST:PORT/APPNAME/WHATEVER

Establezca URI para que apunte al lugar que desee en la aplicación. '/' utilizar para la dirección URL base de su aplicación:

http://HOST:PORT/APPNAME/

Cuestiones relacionadas