访问完整的URL,包括带有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

我可以在字符串前面加上前缀,但是想要一种方法来主动获取正确的主机名…?


问题答案:

您需要根据JSTL函数自己做一些准备,HttpServletRequest#getRequestURL()并提供一些帮助:

<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}"/>