2012-12-11 14 views
24

पर न्यूएल के लिए जांच करने के लिए सर्वोत्तम अभ्यास मेरे पास पर एक थामेलेफ टेम्पलेट कोड प्रारूपित करता है। ऐसे समय होते हैं जब लौटाई गई वस्तु में 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

मैं इस दृष्टिकोण के साथ चला गया, हालांकि मैं अनिवार्य रूप से कोई हैक टेम्पलेट में एक शून्य मान से निपटने से प्रति नहीं दिख रहा है, लेकिन यह सब गोबर करता है टेम्पलेट को ऊपर उठाएं और विचारों और उनके डेटा के लिए चिंताओं को अलग कर दें। – user1812806

50

तुम भी एक सशर्त अभिव्यक्ति अपने वस्तु पर, ताकि स्वरूपण विधि केवल यदि आप आपत्ति लागू किया जाता है का उपयोग कर सकते अशक्त नहीं है उस मामले में अभिव्यक्ति बस शून्य हो जाएगी (th:text विशेषता कुछ भी लिखना नहीं है)।

(अस्वीकरण StackOverflow के लिए आवश्यक: मैं thymeleaf के लेखक हूँ)

+1

प्रतिक्रिया के लिए धन्यवाद। मुझे वास्तव में यह दृष्टिकोण मिल गया लेकिन टेम्पलेट्स को अधिक पठनीय और "साफ" रखने के लिए सर्वर पक्ष पर मानों को सत्यापित करने का निर्णय लिया। जवाब के लिए धन्यवाद। – user1812806

+0

मुझे लगता है कि यह वास्तव में थाइमेलीफ में ** ** बग ** है। 'Date.format' और 'temporals.format' को केवल' शून्य 'वापस करना चाहिए यदि इनपुट मान' शून्य' है। इन बॉयलरप्लेट को हर जगह जोड़ने के लिए बहुत परेशान करना है :( –

+0

मेरे पास एक ही समस्या है, जहां मेरा डेटा ऑब्जेक्ट शून्य नहीं है। अगर मैं इस कोड का उपयोग करता हूं तो यह मुझे अनफॉर्मेटेड तिथि दे रहा है " 06/23/2013 "लेकिन जब मैं

संबंधित मुद्दे