Tambourine作業メモ

主にスキル習得のためにやった作業のメモ。他人には基本的に無用のものです。

Spring Frameworkでイチからアプリを作ってみる(3) Thymeleafのチュートリアルのしょっぱなで出鼻をくじかれる。

前回、Thymeleafの入門ガイドをやってみた

spring.pleiades.io

これでThymeleafが動いていることは確認できたんだけど、Thymeleafの普通の使い方を勉強したい。最低限でも繰り返しの作り方わからないといかんよな。

ひとまず、公式だろうということで、Thymeleafの公式のチュートリアルを読む。

Tutorial: Using Thymeleaf (ja)

知りたいのはどっちかというとシンタックスなんだけど、まずJavaEE標準で作られたサンプルを落としてこいという流れになっている。うーん・・・読み飛ばそう。テンプレートエンジンの設定とかあるけど、たぶんこれSpring Bootだと違うし。というわけで、3章から読むことにする。3章はメッセージの多言語対応である。メッセージのプロパティファイルを複数言語分用意して、ブラウザ設定ごとにそれぞれの言語のバージョンが読まれるようにする。

テンプレートがhome.htmlならファイルはhome.propertiesとして、テンプレートと同じところに置けと書いてある。

greeting.htmlをこんな感じにして・・・

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<boby>
    <p th:text="|Hello, ${name}!!!|" >Hello, World!!!</p>
    <p th:text="#{home.welcome}">Welcome!</p>
</boby>
</html>

テンプレートと同じ位置にテンプレートと同じ名前で置いて・・・

ファイル配置

動かすと・・・

メッセージファイルが読まれていない

ダメですね

まあ、そんな気はした。というわけで、たぶん見ているガイドが違う。探してみて、こっちじゃないかという気がする。

Tutorial: Thymeleaf + Spring

こっちはこっちでBeanの設定がいろいろ並んでいて、いや、こんなのどうせ初心者には教えられないから、シンタックスの話にならねぇかな・・・と思う。5章になって、やっとテンプレートの中身の話になる。

で、同じように最初にメッセージプロパティの話になり、「このサンプルアプリでは以下のようにMessageSource beanが設定されているので、Messages.propertiesをclasspathに置いてね」と書いてある。こんな設定のことらしい。

@Bean
public ResourceBundleMessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("Messages");
    return messageSource;
}

私はこの設定をしていないのだから、この設定で動きはしないのではないかと思うけども、とりあえず、greeting.propertiesをMessages.propertiesにリネームして、resource直下に移動してみる。

メッセージファイルが読まれた

動いた!キモい!

いろいろとググってみると、application.propertiesの spring.messages.basenameに指定すれば動くよと書いてあるページを見かける。Spring Bootのアプリケーションプロパティ設定一覧をチェックしてみる

Spring Boot アプリケーションプロパティ設定一覧 - リファレンス

spring.messages.basenameのディフォルトはmessagesだと書いてある。ということは、大文字小文字を区別しない・・・?application.propertiesに設定してみたり、大文字小文字取り混ぜてみたりと試してみて、大文字小文字は区別しないし、このプロパティでファイルを切り替えることが出来ること、ちゃんと_jaがなければデフォルトが読み込まれることもわかった。とりあえず、小文字の方が好みなので、小文字のmessages.propertiesにしておこう。

うーむ、いろいろとわからないことが多いけど・・・いったん、元のThymeleafのチュートリアルに戻るか・・・。4章からやればいいような気がする

ちなみに、いろいろググっている時に以下の様なQiita記事を見つけて、ここに私の知りたいことは全部簡潔にまとまっているのでこれで十分な気もしてきたんだけど、ちょっと古いし、一応、本家をたどるかな・・・

qiita.com