有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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}

如果有更好的方法,请告诉我


共 (4) 个答案

  1. # 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. # 2 楼答案

    <g:link>标记接受一个参数“absolute=true”,该参数将构建一个尊重当前环境的serverUrl和contextPath的URL。我建议将其与named URL mapping结合起来构建您的URL

    如果无法在页面呈现时构建整个URL,Grails仍然可以为您构建部分URL:

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

    在URL映射中。groovy:

    class UrlMappings {
    
    name mymappingname: "/a/b/$param1?/c/$param2?" {
            controller = 'myRestHandler'
        }
    }
    
  3. # 3 楼答案

    我使用createLink进行求解(操作:'index',控制器:'Root',参数:[id:id],绝对值:true)

  4. # 4 楼答案

    如果你忘了,这不是问题here中的答案吗。只需在已部署机器的配置文件中设置grails.serverURLgrails.app.context。然后使用createLink创建URL。还是我错过了什么