В моем приложении Grails 2.3.7 отсутствует контекст приложения для ссылок в конкретном сценарии. Пока я развиваюсь, все в порядке. Когда я разворачиваю приложение на Tomcat 8 и запускаю его с dbCreate
в источнике данных create
или create-drop
, все работает нормально. Но когда я перезапускаю Tomcat (или передислоцирую) и dbCreate в datasource, установленном в none
, ссылки в приложении генерируются без контекста приложения. Я использую <g:link controller="controller" action="action">Link Text</g:link>
для создания ссылок, в развитии и при использовании dbCreate="create"
ссылки генерируются в /application/controller/action
, но при использовании dbCreate="none"
после перезапуска ссылки генерируются /controller/action
, то application
часть отсутствует, и, таким образом, цель ссылки не найден. Для таких активов, как css-файлы, правильные ссылки генерируются правильно, включая часть application
. Я попытался установить grails.app.context
и grails.serverURL
в Config.groovy, но безуспешно. Я был бы благодарен за любой намек на решение этой проблемы. (Поиск по SO просто возвращает вопросы в обратном направлении, где люди спрашивают, как опустить часть приложения в ссылку, это не то, что я хочу.)В приложении Grails отсутствует контекст приложения в ссылках после повторного развертывания
Обновление: похоже, не связано с tomcat, У меня такое же поведение при работе с grails run-app
.
Обновление: Я могу воспроизвести это с run-app
, prod run-app
, а также с развернутыми войн, но ошибка не происходит каждый раз, может быть, в течение 2 из 3 стартов веб-приложения, так что я предполагаю, что это может быть вопрос времени с контекстом сервлета, но еще не знаю.
Upadte: Отладка показывает, что в DefaultLinkGenerator
contextPath
равно пустой String, но должен быть либо null, либо «application».
Обновление: Бункер grails grailsLinkCreator
был создан при правильном запуске программы. Эта фаза реализована в CachingLinkGenerator
, которая называет ее суперкласс DefaultLinkGenerator
. Когда-то во время запуска, но после создания и инициализации этого компонента, переменная contextPath
в DefaultLinkGenerator
установлена в пустую строку, но я не знаю, когда, откуда и почему.
Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, [добавить контекст вокруг ссылки] (meta.stackoverflow.com/a/8259, //), так что ваш парень пользователи будут иметь представление о том, что это такое и почему оно есть. Всегда указывайте наиболее значимую часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме. Примите во внимание, что быть более чем ссылкой на внешний сайт_ является возможной причиной [Почему и как удаляются некоторые ответы?] (// stackoverflow.com/help/deleted-answers). – FrankerZ
@FrankerZ Я отредактировал свой ответ в соответствии с вашим предложением, спасибо за подсказку. – Calon