mon application Grails 2.3.7 manque son contexte d'application pour les liens dans un scénario spécifique. Pendant que je me développe, tout va bien. Lorsque je déploie l'application sur Tomcat 8 et la démarre avec dbCreate
dans la source de données sous la forme create
ou create-drop
, tout fonctionne correctement. Mais lorsque je redémarre Tomcat (ou redéploie) et que dbCreate est défini dans datasource sur none
, les liens de l'application sont générés sans le contexte de l'application. J'utilise <g:link controller="controller" action="action">Link Text</g:link>
pour créer des liens, dans le développement et si vous utilisez dbCreate="create"
liens sont générés /application/controller/action
mais lors de l'utilisation dbCreate="none"
après des liens de redémarrage sont générés sous forme /controller/action
, la partie application
manque et donc la cible du lien ne peut être trouvé. Pour les ressources telles que les fichiers CSS, les liens de ressources sont générés correctement, y compris la partie application
. J'ai essayé de définir grails.app.context
et grails.serverURL
dans Config.groovy, mais sans succès. Je serais reconnaissant pour toute indication sur la résolution de ce problème. (La recherche sur SO renvoie simplement des questions dans la direction opposée, où les gens demandent comment omettre la partie application dans le lien, ce n'est pas ce que je veux.)Grails App est manquant le contexte d'application dans les liens après redéployer
Mise à jour: Ne semble pas être liée à tomcat, J'ai le même comportement lors de l'exécution avec grails run-app
.
Mise à jour: Je peux reproduire ce avec run-app
, prod run-app
et aussi des guerres déployées, mais l'erreur ne se produit pas à chaque fois, peut-être pendant 2 3 départs de la web-app, donc je suppose que cela pourrait être un problème de synchronisation avec le contexte de servlet, mais je ne sais pas encore plus. Upadte: Débogage montre que dans DefaultLinkGenerator
le contextPath
est égal à la chaîne vide, mais devrait être soit null ou 'application'.
Mise à jour: Le bean grails grailsLinkCreator
est correctement instancié lors du démarrage de l'application. Ce beans est implémenté en CachingLinkGenerator
qui appelle sa superclasse DefaultLinkGenerator
. Au cours du démarrage, mais après la création et l'initialisation de ce bean, la variable contextPath
dans DefaultLinkGenerator
est définie sur la chaîne vide, mais je ne sais pas quand, d'où et pourquoi.
Un lien vers une solution potentielle est toujours le bienvenu, mais s'il vous plaît [ajouter du contexte autour du lien] (// meta.stackoverflow.com/a/8259) de sorte que votre compagnon les utilisateurs auront une idée de ce que c'est et pourquoi c'est là. Toujours citer la partie la plus pertinente d'un lien important, dans le cas où le site cible est inaccessible ou va définitivement hors ligne. Tenez compte du fait qu'être _barely plus qu'un lien vers un site externe_ est une raison possible de [Pourquoi et comment certaines réponses sont-elles supprimées?] (// stackoverflow.com/help/deleted-answers). – FrankerZ
@FrankerZ J'ai édité ma réponse selon votre suggestion, merci pour l'indice. – Calon