Итак, вот моя история.
Я разрабатываю весеннее веб-приложение. Перезагрузка статического содержимого (js, css, jsp) была нарушена и найдена в следующем потоке:
Получение ресурсов на сервере VFrabric для развертывания без необходимости перезагрузки контейнера
Для перезагрузки на работу у меня не могло быть корневого URL '/'. Поэтому я меняю это на "/project" и мои перезагрузки. Большой!
Но тогда возникает следующая проблема. У меня есть много аякс-запросов к '/typeahead/searchUniversities/% QUERY', например, это нужно будет изменить на "project/typeahead/searchUniversities/% QUERY". И когда я загружу его на рабочий сервер, мне нужно будет вернуть его обратно в '/typeahead/searchUniversities/% QUERY'
Поскольку "/проект" предназначен только для разработки
Поэтому я читал про профили, но я не уверен, что это путь. Я мог бы переусердствовать?
Я также думал о том, чтобы иметь что-то вроде "$ {baseurl}/typeahead/searchUniversities/% QUERY", а затем просто менять одно место перед производством. Но не знаю, как это сделать.
Если бы кто-нибудь мог привести меня к примеру, как это сделать, было бы здорово.
Спасибо!
Изменение: добавить еще один прямой способ получить контекстный путь в JSP
URL-адрес никогда не должен быть статичным в webapp: путь контекста определяется во время развертывания, а не во время компиляции. Если вы используете библиотеку Spring tag, вы можете использовать <spring:url>
, если не тег JSTL <c:url>
. Оба автоматически добавят для вас контекстный путь.
BTW: в JSP <%= application.getContextPath() %>
указывает путь контекста без какого-либо дополнительного taglib.
Но, пожалуйста, используйте только относительные пути, где это имеет смысл и никогда не используется для URL "верхнего уровня".
text/javascript
... Этот будет содержать ваш фактический путь к контексту, это будет либо просто определять переменную, которая будет использоваться другими файлами JS, либо напрямую использоваться всеми вашими вызовами ajax.
Ваше приложение не должно зависеть от контекстного пути, в котором оно развертывается. Одним из решений этой конкретной проблемы было бы использование относительных путей в ваших запросах ajax,
например
' typeahead/searchUniversities/%QUERY
', а не ' /typeahead/searchUniversities/%QUERY
'