質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Q&A

解決済

3回答

14670閲覧

Thymeleafのテーブルで特定の条件の場合に行の背景色を変更したい

moshi

総合スコア90

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

1グッド

1クリップ

投稿2020/09/08 09:02

前提・実現したいこと

Thymeleafでテーブルを表示した際に特定の条件の場合に行の背景色を変更したいです。

試したこと

IDと名前を表示する簡単なテーブルですが、${list}ではid(String),kana(String),eFlg(String)の3つの要素を持っています。
このeFlgの値によって行の色を変更したいと思いth:ifで条件を分けてみたのですが

<tbody> <tr th:each="list : ${list}" th:if="${list.eFlg =='0'}" style= "background-color: #00ff00;"> <td th:text="${list.id}"></td> <td th:text="${list.kana}"></td> </tr> </tbody>

まず、これだとeFlgが0の場合は期待通り背景色が緑になりましたが、eFlgが1の場合、表示自体がされなくなってしまいます。

次に

<tbody> <tr th:each="list : ${list}" th:if="${list.eFlg =='0'}" style= "background-color: #00ff00;"> <td th:text="${list.id}"></td> <td th:text="${list.kana}"></td> </tr> <tr th:each="list : ${list}" th:if="${list.eFlg =='1'}"> <td th:text="${list.id}"></td> <td th:text="${list.kana}"></td> </tr> </tbody>

としてみたところ、今回は行が消えることなくすべて表示はされたのですが、
緑の行が先にすべて表示され、白色の行は緑の後にまとめて表示されてしまいました。

緑と白をこのように分けてしまうのではなく混合して処理をするにはどういった記述にすればよいでしょうか?

A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

th:styleappend を使います。

例:

html

1th:styleappend="${employee.department == '営業部'}? 'background-color: #f99;'

なお、cssのクラスを追加する場合は、th:classappend です。

th:if はお調べのとおり、if文の内容がfalseになると、以降の子要素を出力しなくなります。

投稿2020/09/08 10:20

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moshi

2020/09/08 14:59

>A-pZさん ご回答ありがとうございます。 th:styleappendとth:classappend の使い方、勉強になりました。
guest

0

ベストアンサー

CSSのクラス作ってclassappendのほうが良いように思います。

css

1tr.bg-green{ 2 background-color: #00ff00; 3}

Thymeleaf

1 <tr th:each="list : ${list}" th:classappend="${list.eFlg =='1'} ? 'bg-green'">

インラインスタイルはあまり望ましくないのでクラスにしました。

投稿2020/09/08 10:10

編集2020/09/08 10:23
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moshi

2020/09/08 15:01

>m.ts10806さん ご回答ありがとうございます。 記載の通りインラインにするよりCSSを使用したほうがよさそうですね!
m.ts10806

2020/09/08 22:23

むしろインラインのデメリットの方が大きいでしょうね。 HTML,CSSもきちんとおさえるようにしてください。
guest

0

thymeleafを触ってみる(備忘録として)

こちらの記事は参考になりませんか?現在の記述方法ですと、eFlgがfalseの物は表示されませんが、

<p th:text="${---条件式---}? 'A' : 'B'"/>

この書き方に則ればできるのではないでしょうか?

投稿2020/09/08 09:52

yuu_info

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moshi

2020/09/08 15:01

>yuu_infoさん ご回答ありがとうございます。 "${---条件式---}? 'A' : 'B'"という書き方ができるの知りませんでした。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問