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?

18
demandé sur Dunken 2014-06-16 15:22:33

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

35
répondu geoand 2016-09-21 09:32:26

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;
    }
});
7
répondu Sutra 2015-10-04 17:02:57

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.)

4
répondu ClickerTweeker 2016-05-11 18:31:14

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="@{/}"/>
1
répondu Manh Vu 2016-06-17 04:44:59