web-dev-qa-db-ja.com

Thymeleafでのth:fieldのフォーマット

Thymeleafにフォーム入力フィールドがあります。フィールド(以下のコードスニペットのbookingEntry.datefrom)はDate型です。日付ピッカーを使用して、ユーザーがフィールドに入力するために必要な日付を選択してフォーマットできるようにします。これはすべて問題ありません。

ただし、日付の初期値(現在の日付に設定)を選択した形式で表示したいのですが。では、th:fieldに最初に表示された日付をフォーマットするにはどうすればよいですか。 th:valueは無視され(Thymeleafは必要に応じてバッキングオブジェクトから値を取得しています)、th:fieldにフォーマットを適用できないようです。

Thymeleafコードは次のとおりです。

<input type="text" class="form-control getdate"
       th:field="*{datefrom}" placeholder="Date From"
       th:value="${#dates.format(bookingEntry.datefrom, 'dd-MMM-yyyy')}"/>

日付タイプではなく、選択した任意の形式で初期化される文字列を使用できると確信していますが、th:fieldで初期値をフォーマットする方法があるかどうか疑問に思いました。

どうもありがとう

11
Theseus

春についての知識が限られていたという理由だけで、簡単な答えを逃しました。私のような他の初心者に役立つ場合に備えて、ここに追加します。 @DateTimeFormatフォームに渡されるオブジェクトの要素の注釈がその役割を果たします。これにより、Dateオブジェクトが(Thymeleafを使用しているかどうかに関係なく)希望する方法でフォーマットされます。

上記の例では、bookingEntryオブジェクト内

@Temporal(DATE)
@DateTimeFormat (pattern="dd-MMM-YYYY")
private Date datefrom;
20
Theseus

日付がnullの場合、エラーが発生します。日付を解析する前に、値を確認する必要があります。

<input  type="text" name="date" 
        th:value="${user.dateOfBirth}?${#dates.format(user.dateOfBirth, 'dd-MM-yyyy')}:''" 
        placeholder="dd-mm-yyyy"  id="pickyDate"/>
1
Lay Leangsros