1

我到处寻找和尝试都没有成功,所以发布了这个问题。

最近在 Heroku 平台上部署了一个可以运行的 Spring MVC 应用程序,这对大多数人来说都是一次愉快的体验。与我的本地 tomacat 服务器相比,Heroku 上的 spring url 标记甚至 jstl 核心 url 标记的行为如何不同。

例如,我的链接'>登录将完美地解析为我本地的 http://mydomain:port/context/signin 但在部署 Heroku 后它将 /signin 作为绝对路径,所以我很快删除了它,它运行良好。

但是,我的导航栏上有一个主页链接,如果我删除正斜杠,则主页链接是“>主页”,那么主页链接基本上指向地址栏上的当前网址,而不是上下文主页。

有什么建议么 ?

4

2 回答 2

3

根据经验,最适合我的不是/在左侧硬编码您的链接,而是在您的 jsp 上创建这个“根”变量:

<c:set var="root" value="${pageContext.request.contextPath}"/>

然后在您需要参考根路径时在您的 jsp 中:

<img src="${root}/resources/mycoolpic.png"/>

其他变体是您可以使用 html<base..>标记来设置/引用位置,但这会使您的代码更加晦涩难懂。例如:

<base href="my-root">
<img src="/resources/mycoolpic.png"/>

实际上会解析为 /my-root/resources/mycoolpic.png

于 2013-08-16T00:22:26.167 回答
1

在经历了其他几个类似的问题和答案之后,下面的方法解决了我在 Heroku for Home page link 上的问题。

created a <base/> element in <head> as below

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}
:${pageContext.request.serverPort}${pageContext.request.contextPath}" />

然后在 jsp 中,下面的代码开始在 Heroku 上正确解析

<a href='<s:url value=""></s:url>'>Home</a>
<s:url value="signin"></s:url>'>Sign in</a>

我的本地 tomcat 部署如何工作,我必须在上面附加一个额外的正斜杠

<base href="${pageContext.request.scheme}://${pageContext.request.serverName}
:${pageContext.request.serverPort}${pageContext.request.contextPath}/" />

由于此代码仅在我的基本模板中,我想我将不得不忍受本地版本和已部署版本之间的文件差异

我很想看到任何有益健康的答案

于 2013-08-16T04:51:48.970 回答