我们在Heroku中部署了一个Java / Spring应用程序,使用优秀的webapp-runner
作为Tomcat-lite servlet容器。在从7.0.27.1升级到7.0.31.1时,似乎设置默认上下文路径“/”的行为会导致<spring:url>
标记出现问题。具体来说,使用默认上下文路径“/”,像<spring:url value="/foo/bar"/>
这样的标记最终会呈现为//foo/bar
。我在OS X(Chrome,Safari,Firefox)上测试的所有浏览器似乎都没有特别优雅地处理这些浏览器,并尝试加载http://foo/bar
,导致各种混乱。
我可以想到两个解决方法:
--context-path ""
指定webapp-runner
参数 - 这似乎是“最佳”,因为它对应于7.0.27.1行为<spring:url context="" .../>
- 不确定可能会产生哪些其他后果,考虑SpringUrl
如何使用前导斜杠来确定UrlType
。这些都是合理的吗?如果没有,我还应该考虑其他解决方案吗?
答案 0 :(得分:2)
webapp-runner-7.0.34.1已将默认--context-path
更改回""
。如果您升级,它应该解决您的问题。
答案 1 :(得分:0)
我有类似的问题双斜杠// ,并从webapp-runner 7.0.34.0升级到 webapp-runner 7.0.34.1解决了我的问题。
我曾尝试使用<spring:url>
和${pageContext.request.contextPath}
。升级webapp-runner解决了这两种情况的问题。