java Grails智能地获取war baseUrl?
我的基本URL是http://localhost:8080/whatever
。在其他机器上,它是http://localhost/whatever
有没有一种聪明的方法可以不使用
<%
String baseUrl = "http://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath()
%>
我正在尝试动态创建一些指向路径参数化rest URL的链接,即:
http://localhost:8080/a/b/${param1}/c/${param2}
如果有更好的方法,请告诉我
# 1 楼答案
此解决方案不需要grails。要设置的服务器URL:
<g:createLink absolute='true' uri='/WHATEVER'/>
或${g.createLink(absolute:true, uri:"/WHATEVER")}
将产生:
http://HOST:PORT/APPNAME/WHATEVER
将
URI
设置为指向您希望在应用程序中显示的位置。使用'/'
作为应用程序的基本URL:http://HOST:PORT/APPNAME/
# 2 楼答案
<g:link>标记接受一个参数“absolute=true”,该参数将构建一个尊重当前环境的serverUrl和contextPath的URL。我建议将其与named URL mapping结合起来构建您的URL
如果无法在页面呈现时构建整个URL,Grails仍然可以为您构建部分URL:
在URL映射中。groovy:
# 3 楼答案
我使用createLink进行求解(操作:'index',控制器:'Root',参数:[id:id],绝对值:true)
# 4 楼答案
如果你忘了,这不是问题here中的答案吗。只需在已部署机器的配置文件中设置
grails.serverURL
和grails.app.context
。然后使用createLink
创建URL。还是我错过了什么