我的baseUrl是http://localhost:8080/whatever
。在其他机器上,它是http://localhost/whatever
。
是否有一种聪明的方法可以在不使用
的情况下获取此信息<%
String baseUrl = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()
%>
我正在尝试动态创建一些指向路径参数化的rest URLS的链接,即:
http://localhost:8080/a/b/${param1}/c/${param2}
如果有更好的方法,请告诉我。
答案 0 :(得分:7)
如果你忘了,问题here中没有回答。只需在已部署计算机的配置文件中设置grails.serverURL
和grails.app.context
即可。然后使用createLink
制作网址。或者我错过了什么?
答案 1 :(得分:6)
此解决方案不需要设置grails.serverURL:
<g:createLink absolute='true' uri='/WHATEVER'/>
或
${g.createLink(absolute:true, uri:"/WHATEVER")}
将生成:
http://HOST:PORT/APPNAME/WHATEVER
将URI
设置为指向应用中的目标位置。使用'/'
作为应用的基本网址:
http://HOST:PORT/APPNAME/
答案 2 :(得分:0)
<g:link>标记接受一个参数“absolute = true”,它将构建一个尊重当前环境的serverUrl和contextPath的URL。我建议将其与named URL mapping结合使用以构建您的网址。
如果您无法在页面呈现时构建整个网址,Grails仍然可以为您构建部分网址:
var url = '${g.createLink(absolute: true, mapping: "mymappingname")}/' + param1 + '/c/' + param2;
console.log(url); // "http://localhost:8080/whatever/a/b/something/c/somethingelse"
在UrlMappings.groovy中:
class UrlMappings {
name mymappingname: "/a/b/$param1?/c/$param2?" {
controller = 'myRestHandler'
}
}
答案 3 :(得分:0)
我使用createLink解决(action:'index',controller:'Root',params:[id:id],absolute:true)