ThymeleafでJavaScriptを埋め込む(インライン)方法

Javaを学習したいけれどどの学習サービスを選べば良いか分からないという悩みを抱えていませんか?
Javaは市場価値が高い為、学習サービスを提供しているものも多く、条件に合うものを見つけるのに苦労しますよね。
以下の記事ではJavaを入門レベルから勉強できるおすすめ学習サービスをご紹介しています。
Spring FrameworkやThymeleafがカリキュラムに含まれているものがあるので、ぜひ参考にしてください!
OS | macOS Catalina 10.15.1 |
Eclipse | Photon 2018-09 |
Java | 8 |
Spring Tool Suit | 3.9.6 |
Spring Boot | 2.1.13 |
Thymeleaf | 2.1.2 |
開発および実行環境がない人は、以下の記事を参考に構築してください。
今回は、ThymeleafでJavaScriptを埋め込む(インライン)方法をご紹介します。
また、サンプルとして以下のようなプログラムを作成します。ぜひ参考にしてください。
ThymeleafでJavaScriptを埋め込む(インライン使用する)方法は以下のとおりです。
<script>
タグに th:inline="javascript"
を指定する/*[[${...}]]*/
で記述する<script type="text/javascript" th:inline="javascript">
function changeTextColor() {
document.getElementById(/*[[${elemId}]]*/).style.color = 'red';
}
</script>
外部のJavaScriptファイルを読み込む方法については、以下の記事を参考にしてください。
JavaScriptを埋め込む(インライン)プログラムを実装する手順は以下のとおりです。
また、フォルダ構成は以下のとおりです。
src/main/java/com.example.controller
├─ JsInlineController.java
src/main/resources/templates
└─ jsinline.html
はじめに、Controllerクラスを作成します。
今回は「JsInlineController」という名前で作成します。
テンプレート変数の elemId
にりんごのidを指定し、URLは「/jsinline」、テンプレートファイル名は「jsinline」を指定します。
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JsInlineController {
@RequestMapping("/jsinline")
public String sample(Model model) {
model.addAttribute("elemId", "apple");
return "jsinline";
}
}
次に、テンプレートファイルを作成します。
今回は「jsinline」という名前で作成します。
th:onclick="changeTextColor();"
でボタン押下時に changeTextColor()
を呼び出し、changeTextColor()
の処理内で「りんご」の文字色を赤色に変更しています。
また、テンプレートファイルからJavaScriptへの値渡しは /*[[${elemId}]]*/
で行なっています。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>ThymeleafでJavaScriptを埋め込む(インライン)方法</title>
<style>
body {
background-color: whitesmoke;
color: #333;
}
div {
margin: 45px 0 0 45px;
}
ul {
list-style: none;
padding: 0;
}
</style>
</head>
<body>
<div>
<ul>
<li id="apple">りんご</li>
<li id="lemon">レモン</li>
<li id="kiwi">キウイ</li>
<li id="orange">みかん</li>
</ul>
<button th:onclick="changeTextColor();">色を変える</button>
</div>
<!-- [色を変える] ボタン押下時に「りんご」の文字色を赤色に変更する -->
<script type="text/javascript" th:inline="javascript">
function changeTextColor() {
document.getElementById(/*[[${elemId}]]*/).style.color = 'red';
}
</script>
</body>
</html>
最後に、ブラウザで「http://localhost:8080/jsinline」にアクセスして動作を確認します。
[色を変える] ボタン押下時に「りんご」の文字色が赤色に変更されたら、動作の確認は完了です。
ThymeleafでJavaScriptを埋め込む(インライン)方法をご紹介しました。
少しでも参考になれば幸いです。
以下の書籍は、Thymeleafを書籍で学びたい人やThymeleafと併せてSpring Frameworkを学習したい人におすすめしている書籍です。
Springについての書籍ですが、Thymeleafの基礎や基本構文から他システムとの連携等30ページほど取り上げられており、ThymeleafとSpringを一度に学べる書籍になっています。
ぜひ一度手に取ってみてください。
現在、ミルラクでは記事に関するアンケートを実施しています。
ご回答いただいた内容は今後の記事の役立てていきますので、ぜひご回答ください!