JSTL one ${pageContext.request.contextPath}
、
フォームのアクション属性を変更してjavascriptコードを作成し、スプリングコントローラーの編集メソッドを呼び出すようにしたため、以下のコードは、最初に${pageContext.request.contextPath}/edit.html
<script th:inline="javascript">
function edit() {
document.getElementById("user_form").action = "/edit.html";
}
</script>
呼び出す構文は何ですかThymeleaf context path?
Thymeleafでは、JSPの${pageContext.request.contextPath}/edit.html
だろう @{/edit.html}
this 詳細については、Thymeleafのドキュメントの一部をご覧ください
あなたの場合、あなたは書くでしょう:
<script th:inline="javascript">
function edit() {
var link = /*[[@{/edit.html}]]*/ 'test';
document.getElementById("user_form").action = link;
}
</script>
/*[[
-]]*/
構文は、Thymeleafによって使用され、Javascriptで使用される変数を評価します。静的にロードする場合は、スクリプトを中断することはありません。 this 詳細についてはドキュメントの一部をご覧ください
Thymeleaf および jQuery の私のソリューションは次のとおりです。
Thymeleafで $ {#httpServletRequest.getContextPath()} を使用して、meta要素にコンテキストパスを記述します。
<meta name="ctx" th:content="${#httpServletRequest.getContextPath()}" />
jQueryでは、 $。ajaxPrefilter() を使用して、すべてのjQuery AJAXリクエストにコンテキストパスを追加します。
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;
}
});
他の誰かがこの質問に私が元々探していたものを見つけた場合に備えて... Thymeleafページ内のページのルートのコンテキストパス変数を設定して外部JQueryページに引き継ぐ。ここにそれが私のために働いた方法があります...上記と同じように空白のままにします...
JSPの古い方法
<script >var contextRoot = "${pageContext.request.contextPath}"; </script>
Thymeleafの新しい方法
<script th:inline="javascript"> var contextRoot = /*[[@{/}]]*/ ''; </script>
および詳細情報のリンク... http://forum.thymeleaf.org/JSESSIONID-in-td3386826.html
(IDEにもよりますが、コード番号の同じ行ではなく、2行以上にスクリプトを設定します。)
これを試して:
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="@{/}"/>