访问完整的URL,包括带有jstl的主机名

时间:2011-10-06 13:13:34

标签: java jsp spring-mvc jstl

<c:url var="myUrl" value="/MyPath/${MyID}"/>

我稍后再使用(使用户能够复制链接):

<input size="35" disabled value="${myUrl}" />

并显示

/my-app-name/MyPath/23

然而我希望它是

http://myHost/my-app-name/MyPath/23

我可以将字符串置于肯定之前,但想要一种主动获取正确主机名的方法......?

2 个答案:

答案 0 :(得分:23)

您需要根据HttpServletRequest#getRequestURL()JSTL functions的一点帮助自行准备:

<c:set var="req" value="${pageContext.request}" />
<c:set var="baseURL" value="${fn:replace(req.requestURL, fn:substring(req.requestURI, 1, fn:length(req.requestURI)), req.contextPath)}" />
...
<c:url var="myUrl" value="${baseURL}/${MyID}"/>

答案 1 :(得分:7)

HttpServletRequest对象具有所有细节:

  • getProtocol
  • getServerName
  • getContextPath

所以我认为你可以使用:

${request.protocol} :// ${request.serverName} ${request.contextPath} /etc

构建你想要的东西。