フォームでセレクトフィールドを表示する際、IDではなくラベル名で表示させたいケースもあると思います。
本記事では、そのような場合にAPIとThymeleafを使ってラベル名で表示する方法をご紹介します。
APIでセレクトフィールドのラベル名を取得する方法
APIでラベル名を取得するには、クエリパラメータに「optionsFormat」を追加する必要があります。
「レコード一覧を取得」にてラベル名で取得する方法
サンプルコード
$optionsFormat="?optionsFormat=label"; $resultRecordListSelect = $commonBase->apiCurlAction("GET", "/apps/". APP_ID. "/dbs/". DB_ID. "/records".$optionsFormat);
「レコード一覧を取得」のAPIに関しては、 APIメソッドごとのサンプルコードまとめ Record / Record (bulk)をご参照ください。
Thymeleafの引用値でセレクトフィールドをラベル名で取得する方法
引用したDBのデータを取得する方法は「認証レコード引用」と「クエリパラメータ引用」のいずれかを使うことで取得できます。
設定方法は、フォームブロックの【「+」>引用値表示パーツ>フィールド】から選べます。
下記方法で、引用値のラベル名を取得することが可能です。
「認証レコード引用」にてラベル名を取得する方法
フォーム
<!--/* セレクト(select) */--> <div class="sp-form-item sp-form-field"> <div class="sp-form-label"> セレクト </div> <div class="sp-form-data"> <!--/* record[x]には引用元のDBのセレクトフィールドのフィールドIDが入ります。 */--> <span class="sp-form-embedded" th:text="${siteClient.record[x]?.label}">Item</span> </div> </div>
「クエリパラメータ引用」にてラベル名を取得する方法
フォーム
<!--/* セレクト(select) */--> <div class="sp-form-item sp-form-field"> <div class="sp-form-label"> セレクト </div> <div class="sp-form-data"> <!--/* dbs[yyyyy]には引用元のDBIDが入ります。 */--> <!--/* record[x]には引用元のDBのセレクトフィールドのフィールドIDが入ります。 */--> <span class="sp-form-embedded" th:text="${dbs[yyyyy] != null} ? (${dbs[yyyyy].record[x]?.label} ?: '値なし')">Item</span> </div> </div>
さいごに
DBのから取得した情報をラベル名で取得する情報を紹介いたしました。
もしラベル名ではなくラベルIDで表示させたい場合、Thymeleafの「.label」を「.id」に変更すると表示できますので、ぜひお試しください。