web-dev-qa-db-ja.com

thymeleaf内にJavaScript変数を含める

条件をチェックするためにthymeleaf内にJavaScript変数を含めるにはどうすればよいですか?

試した:

<div th:if="${myVariable == 5}">
 //some code
</div>

しかし、それは機能していません。

Thymeleafはサーバー側でテンプレートを処理するため、アクセスしようとしている変数はそのモデルで定義されている変数であるため、実行しようとしていることは機能しません。

Thymeleafが動作しているモデルにmyVariableが含まれている場合、それは機能します。 ThymeleafテンプレートでJavascript変数の値を設定したい場合は、以下を実行できます。

<script th:inline="javascript">
/*<![CDATA[*/
    ...

    var myVariable= /*[[${myVariable}]]*/ 'value';

    ...
/*]]>*/
</script>

スクリプト内には、非表示/表示など、必要なロジックを含めることができます。

モードの詳細については、ドキュメントの this の部分を確認してください。

33
geoand

Thymeleaf 3では、変数をインラインで参照するためにCDATAブロックを削除する必要がありました。そうしないと、パーサーはそれを完全に無視しました。この構文は、アップグレード後にうまく機能しました。

<script th:inline="javascript">
     var myVariable = [[${#vars.myVar}]];
     ...
</script>

注:変数も[[$ {#ctx.variables.myVar}]]として参照している場合、ctxには変数という名前の変数がないため、thymeleaf 3では機能しなくなります。

0
Taugenichts