Quelle est la syntaxe pour obtenir Thymeleaf $ {pageContext.demande.contextPath}
j'ai cherché une syntaxe semblable à celle de JSTL ${pageContext.request.contextPath}
,
J'ai fait un code javascript pour modifier l'attribut action du formulaire d'appeler la méthode edit du ressort du contrôleur, le problème est le code ci-dessous ne fonctionnent pas sans appeler le Contexte d'abord comme l' ${pageContext.request.contextPath}/edit.html
<script th:inline="javascript">
function edit() {
document.getElementById("user_form").action = "/edit.html";
}
</script>
alors, quelle est la Syntaxe pour appeler Thymeleaf chemin de contexte?
4 réponses
Dans Thymeleaf l'équivalent de JSP ${pageContext.request.contextPath}/edit.html
@{/edit.html}
découvrez partie de la documentation de Thymeleaf pour plus de détails
Dans votre cas, on peut écrire :
<script th:inline="javascript">
function edit() {
var link = /*[[@{/edit.html}]]*/ 'test';
document.getElementById("user_form").action = link;
}
</script>
/*[[
-]]*/
la syntaxe est utilisée par Thymeleaf pour évaluer les variables utilisées par Javascript, sans casser le script si celui-ci doit être chargé statiquement. Découvrez partie de la documentation pour plus de détails
Ma solution pour Thymeleaf et jQuery est ci-dessous.
Utiliser ${#httpServletRequest.getContextPath ()} dans Thymeleaf à écrire le chemin de contexte dans l'élément meta:
<meta name="ctx" th:content="${#httpServletRequest.getContextPath()}" />
$.ajaxPrefilter () pour la faire précéder de chemin de contexte à toutes les requêtes AJAX jQuery:
var _ctx = $("meta[name='_ctx']").attr("content");
// Prepend context path to all jQuery AJAX requests
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if (!options.crossDomain) {
options.url = _ctx + options.url;
}
});
juste au cas où quelqu'un d'autre trébucherait sur cette question à la recherche de ce que j'avais été à l'origine...définition d'une variable de chemin de contexte pour la racine de la page à L'intérieur de la page Thymeleaf à reporter sur une page jQuery externe. Voici comment il a travaillé pour moi...même chose que ci-dessus juste laissé en blanc...
Ancienne avec JSP
<script >var contextRoot = "${pageContext.request.contextPath}"; </script>
Nouvelle façon avec Thymeleaf
<script th:inline="javascript"> var contextRoot = /*[[@{/}]]*/ ''; </script>
et un lien avec plus d' information... http://forum.thymeleaf.org/JSESSIONID-in-td3386826.html
(aussi dépendant de L'IDE, j'ai placé le script sur deux+ lignes par opposition à la même ligne du numéro de code.)
essaye ceci:
var BASE_CONTEXT_PATH = $('meta[name=context-path]').attr("content");
BASE_CONTEXT_PATH = BASE_CONTEXT_PATH.substr(0, BASE_CONTEXT_PATH.length - 1);
<meta name="context-path" th:content="@{/}"/>