2012-12-11 14 views
24

Mam szablon kodu Thymeleaf do formatu w formacie. Są chwile, kiedy ta data będzie null w zwróconym obiekcie. Jaki jest najlepszy sposób sprawdzenia, czy w tej sytuacji jest null w Thymeleaf? Obecnie szablon jest rzucanie się następujący błąd:Thymeleaf - Najlepsza metoda sprawdzania wartości NULL podczas formatowania (tj. Dat)

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) 

Odpowiedz

5

można użyć thymeleafs klasę użytkową obiektów Objects lub walidacji obiekt przed przekazaniem go do szablonu.

Wolę walidacji jak zwykle nie chcą włamać się wokół w szablonie. w ten sposób zachowujesz swoje dane luźno powiązane z widokiem.

+1

Poszedłem z tym podejściem, chociaż nie koniecznie zobaczyć obsługi wartość null w szablonie hack per se, ale robi syf szablon i prawdopodobnie rozdzielają wątpliwości dotyczące poglądów i ich danych. – user1812806

50

Można również użyć wyrażenia warunkowego na obiekcie, tak że metoda formatowania jest stosowana tylko wtedy, gdy obiekt nie jest zerowy: th:text="${myDate} ? ${#dates.format(myDate,...)}"

Uwaga nie ma „inny” część w wyrażeniu powyżej, aw W takim przypadku wyrażenie zwróci po prostu wartość NULL (co spowoduje, że atrybut th:text nic nie napisze).

(Zastrzeżenie wymagane przez StackOverflow: Jestem autorem thymeleaf)

+1

Dzięki za odpowiedź. Właściwie to podejście działa, ale zdecydowałem się zweryfikować wartości po stronie serwera, aby szablony stały się bardziej czytelne i "czyste". Dzięki za odpowiedzi. – user1812806

+0

Myślę, że to w rzeczywistości ** bug ** w Thymeleaf. Formaty 'dates.format' i' temporals.format' powinny po prostu zwrócić 'null' w przypadku, gdy wartość wejściowa to' null'. Jest to bardzo irytujące, aby dodać te boilerplate 'if's wszędzie :( –

+0

mam podobny problem, gdzie, jak mój obiekt danych nie jest zerowa to daje mi un -formatted datę, jeśli mogę użyć tego kodu„ 23.06.2013 "ale kiedy używam 06/23/2013 daje mi to null ... jakikolwiek pomysł @Daniel Femandez –

Powiązane problemy