Thymeleaf(テンプレートエンジン)で金額などの数値を
1000円単位のカンマ区切りで表示する方法です。
ここでは、カンマ区切りの機能はオブジェクト側で実装し、
Tymeleaf(View)は表示のみとします。
目次
表示するオブジェクト(Bean)
1 2 3 4 5 6 7 8 9 10 11 |
// 基本料金 public class BasicCharge { private Integer price; private String discription; // 他のフィールドは省略 // 1000円単位でカンマ区切り public String commaOf1000() { return String.format("%,d", price); } } |
なぜ、”%,d”で1000単位区切りになるのかというと、
,(カンマ)がd(10進数の整数)を1000単位で区切る文字としてのフラグになっているからです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/Formatter.html#syntax
※フラグの項目を参照
Thymeleaf(View)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <head> <meta charset="UTF-8"> </head> <body> <div th:fragment="contents"> <div class="page-header"> <h1>基本料金</h1> </div> <div class="page-content"> <div> <a class="btn btn-outline-warning btn-sm" th:href="@{/basic_charge_edit}">変更</a> </div> <table border="1" th:object="${basicCharge}"> <thead><tr><th>基本料金</th><td th:text="${basicCharge.commaOf1000()} + 円"></td></tr></thead> <tbody><tr><th>説明</th><td th:text="*{discription}"></td></tr></tbody> </table> </div> </div> </body> </html> |
Thymeleafは、${}で渡されたオブジェクトを扱うことができます。
${basicCharge.commaOf1000()}とすることで、basicChargeオブジェクトのcommaOf1000メソッドを呼び出すことができます。
表示結果
28000が、28,000に変換されて表示されています。
コメント