Themeleaf if elseの処理方法

2021-08-18

こんにちは、管理人です。

今回はJavaのフレームワークのSpringbootで

よく使用されるタイムリーフのif文について触れていきたいと思います。

開発現場でSpringbootを使用して頻度が多かったので簡単にですが、まとめることにしました。

知らないと後々修正範囲が広くなりかなり面倒なので使用する方は是非参考にしてください。

Springbootの学習方法を未経験から開発現場で活躍できるようになったのでまとめる。

SpringbootのMessageSourceについて

下記のような方は是非参考にして下さい。

  • Spring bootでの開発予定がある方
  • Thymellef初心者

タイムリーフとは?

そもそもタイムリーフとは何でしょうか。

厳密に言うと違うと思いますが、一言で言えば

JSPみたいなもと認識してもらえれば大丈夫です。

コントローラーでModelに積めることによって、HTML上でJavaの処理を記述することが出来ます。

ちなみにJavascriptにも記述することが出来ます。

タイムリーフを使用する場合は「th:〇〇」と記述します。

例としては、

  • th:if
  • th:text
  • th:value
  • th:checked
  • th:selected
  • th:style

if文

if文の処理について確認していきます。

単純なif文の場合はこれ

<th:block th:if=”${test == 1}”></th:block>

このように記述することでtestの値が1の場合th:block内の中の処理が表示することができます。

else if の場合はこれ

<th:block th:if=”${test == 1}”>test</th:block>

<th:block th:unless=”${test == 1}”>test</th:block>

このようにしたらtestの値により条件分岐を行うことが出来ます。

HTML上では該当しない値は出力されないので

IDを複数付与することも可能です。

<th:block id=”test” th:if=”${test == 1}”>test1</th:block>

<th:block id=”test” th:unless=”${test == 1}”>test2</th:block>

testが1なら上記の内容だったらtest1だけの出力になります。

JsとかでID名を取得して処理する場合でも同じID名を付与することができるので慣れれば楽です。

springとタイムリーフを使ってみて

タイムリーフを使ってみて、

タイムリーフ内に複雑な処理をあまり行わない方が良いのかなと個人的に思いました。

私自身Javaを使用することが多いのですが

処理を追う際にタイムリーフだと正確に追いきれないです。

javaのデバックで処理を追う方が簡単に思いました。

特にこのような記事を検索している方はJavaに処理を書き

あくまで補助くらいの感じで使用する方が便利かなと思います。

エラーを起こした際などの修正などの速さが個人的にはJavaの方が早かったのでこのような追記しました。

あくまで参考程度に聞いてもらえれば助かります。

修正を意識すると

追記

Springの開発を行って1年以上経過しました。

1年以上経過すると昔のコードの修正などがかなり面倒で

あのとき〇〇を意識して実装したほうが良かったと思うことは多々あります。

今回の記事ではタイムリーフを使用しましたが、やはり意識しておいたほうが良い点はありました。

タイムリーフを使用するにはModelに格納する必要があります。

必要な値の出力を行う時はかなりあると思います。

ここで注意してほしいのが

Modelにはクラスごと格納しましょう。

htmlに記述することで、下記まちがいてしまったりすると

最初はエラーを吐いたりして修正箇所が見つけにくいかもしれませんが、

クラスごと格納することでJavaのコントローラの記述は少なくなり、

かなり管理しやすいです。

またクラスの中に判定メソッドを追加したりすると、

Java側の処理は特に変更せず画面の処理を追加するだけでOKです。

booleanの判定処理だったりすると判定結果により

簡単に表示非表示の画面を作成することが出来ます。

メソッド単位でModelに格納することは個人的にお薦めはできないです。

まとめ

まとめ

今回のまとめです。

タイムリーフを使用して条件分岐をする方法を紹介しました。

あまり複雑な処理をするとエラー箇所がわかりにくくなるので

個人的には処理はコントローラーでまとめてしまうのが良いと思います。