1

私は成功せずにどこでも見て試してみたので、この質問を投稿しました。

最近、動作する Spring MVC アプリを Heroku プラットフォームにデプロイしましたが、これは最も楽しい経験でした。春の url タグまたは jstl コア url タグでさえ、Heroku では、ローカルの tomacat サーバーとは異なる動作をしています。

たとえば、私のリンク '>Sign in は、私のローカルでは http://mydomain:port/context/signin に完全に解決されますが、Heroku をデプロイした後は絶対パスとして /signin になるため、すぐに削除してうまく機能しています。

ただし、ナビゲーションバーに「>ホーム」というホームリンクがあります。フォワードスラッシュを削除すると、ホームリンクは基本的に、コンテキストホームではなくアドレスバーの現在のURLを指します。

助言がありますか ?

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 リンクの問題を解決しました。

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

このコードは私の基本テンプレートにのみ含まれているため、ローカル バージョンとデプロイ済みバージョンの間でこの 1 つのファイルの不一致に対処する必要があると思います

健全な回答をお待ちしております

于 2013-08-16T04:51:48.970 に答える