2012-12-11 54 views
24

という形式のThymeleafテンプレートコードがあります。その日付が返されるオブジェクトのnullになることがあります。この状況でThymeleafでnullをチェックする最良の方法は何ですか?現在のテンプレートには、次のエラーがスローされます。Thymeleaf - フォーマット時にNULLをチェックするベストプラクティス

Caused by: java.lang.IllegalArgumentException: Cannot apply format on null 
    at org.thymeleaf.util.Validate.notNull(Validate.java:37) 
    at org.thymeleaf.util.DateUtils.format(DateUtils.java:182) 
    at org.thymeleaf.expression.Dates.format(Dates.java:164) 

答えて

5

あなたはthymeleafsオブジェクトのユーティリティクラスObjectsを使用したり、テンプレートに渡す前に、オブジェクトを検証することができます。

通常、テンプレートでハックしたくないので、私は事前確認を優先します。そのようにしても、データを見た目から疎結合させることができます。そこ表現には「他」の部分は、上記でなく、中th:text="${myDate} ? ${#dates.format(myDate,...)}"

注:オブジェクトの場合のフォーマット方法のみが適用されるように

+1

私は必ずしもテンプレートにそれ自体がハックをnull値を扱う見えませんが、私はこのアプローチに行きましたが、それは泥を行いますビューとそのデータに対する懸念の分離を断ち切るかもしれません。 – user1812806

50

あなたはまた、あなたのオブジェクトに条件式を使用することができますと、nullではありませんその場合、式は単にヌルを返します(th:text属性は何も書き込まれません)。

(StackOverflowので必要とされる免責事項:私はthymeleafの著者午前)

+1

お返事ありがとうございます。私は実際にこのアプローチを働かせましたが、テンプレートをより読みやすく、「きれいに」保つために、サーバー側の値を検証することに決めました。応答していただきありがとうございます。 – user1812806

+0

これは実際にはThymeleafの**バグ**だと思います。 'dates.format'と' temporals.format'は、入力値が 'null'の場合に単に' null'を返さなければなりません。 ( –

+0

私のデータオブジェクトがnullでないのと同様の問題があります。このコードを使用するとフォーマットされていない日付を与えています。 " 06/23/2013 "ですが、私が を使用した場合、> 06/23/2013それは私にnullを与える...任意のアイデア@ダニエル・フェマンデス –

関連する問題