我有一個簡單的應用程序,我在本地(在Tomcat中)以及Google App Engine和Heroku上部署。JSTL URL標記在Heroku上無效
該應用程序使用JSTL標籤,並且除了URL標籤(<c:url value="/someUrl"/>
)之外,它們在所有部署中都可以正常工作,只有在Heroku上,該標籤預先添加了一個額外的正斜槓,從而將所有內容都擰緊。這就是我的意思是:
<c:url value='/laundryLists/search.htm'/>
在我本地的Tomcat,在應用程序部署有「testApp」的背景下剪斷將genreate在頁面下面的字符串上面的代碼:
「/ testApp/laundryLists/search.htm「
這是正確的。
在我的GAE部署的應用程序,它坐落在地址testApp.appspot.com,上面的代碼片段生成:
「/laundryLists/search.htm」
這是正確的,因爲這裏的應用上下文是 「/」(根)
以我的Heroku版本,其被部署在 「testApp.herokuapp.com」
完全相同的代碼生成:
「//laundryLists/search.htm」(注意兩個斜槓開頭)
這是不對的,因爲如果放在一個鏈接,如
<a href="<c:url value='/laundryLists/search.htm'/>">whatever</a>
鏈接的URL將是:
http://laundryLists/search.htm
這顯然是錯誤的。
值得一提的是,其他JSTL標籤(例如「forEach」)在Heroku中工作正常。
所以我的問題是,爲什麼在Heroku上發生這種情況,我該如何解決它(除了硬編碼的URL)?