2010-08-11 11 views
16

मेरे पास मेरे मॉडल में जोडा-डेटटाइम फ़ील्ड है और इसे जेएसपी व्यू में स्वरूपित करना चाहते हैं।स्प्रिंग एमवीसी 3.0 में स्वरूपित डेटटाइम कैसे प्रदर्शित करें?

public class Customer { 
    private DateTime dateOfBirth; 

    @DateTimeFormat(style="M-") 
    public DateTime getDateOfBirth() { 
     return dateOfBirth; 
    } 
} 

अब मैं अपने JSP में dateOfBirth प्रदर्शित करना चाहते हैं: मैं नए @DateTimeFormat टिप्पणी के साथ यह टिप्पणी किए गए

Date of birth: ${customer.dateOfBirth} 

लेकिन परिणाम अस्वरूपित है:

Date of birth: 2010-08-11T11:23:30.148+02:00 

के बाद कुछ शोध मैंने पाया, मुझे वसंत का उपयोग करना है: बाइंड-टैग:

<spring:bind path="customer.dateOfBirth"> 
    Date of birth: ${status.value} 
</spring:bind> 

इसके साथ यह काम करता है। लेकिन यह इस सरल कार्य के लिए बहुत जटिल लगता है। और सूचियों पर इस विधि का उपयोग करना और भी जटिल है क्योंकि आपको सूची-अनुक्रमणिका को बाइंडिंग-पथ में एकीकृत करना है।

तो मेरा सवाल यह है: क्या वसंत स्वरूपण-एनोटेशन का उपयोग करके स्वरूपित मूल्य प्रदर्शित करने का कोई आसान तरीका है?

उत्तर

19

उपयोग spring:eval टैग जो @DateTimeFormat नियम समझता है:

<spring:eval expression="customer.dateOfBirth" /> 

वैकल्पिक रूप से, आप अपने मॉडल सभी एक साथ से @DateTimeFormat नियम हटाकर Joda के formatDate टैग का उपयोग के रूप में Naikus दिखाता है सकते हैं।

भविष्य में रिलीज में, वसंत वसंत द्वारा "स्प्रिंग अभिव्यक्ति भाषा" में प्लगिंग का समर्थन करने की योजना बना रही है, जो आपके जेएसपी पृष्ठों के लिए डिफ़ॉल्ट एकीकृत ईएल कार्यान्वयन के रूप में eval है। यह स्पेल के माध्यम से मार्गित होने के लिए ${customer.dateOfBirth} जैसे ऑनलाइन अभिव्यक्तियों को भी अनुमति देगा। आप यहां इस एन्हांसमेंट अनुरोध को वोट दे सकते हैं: https://jira.spring.io/browse/SPR-7459

+0

वसंत: eval महान काम करता है। इसके अलावा मैंने जेएसपी में स्पेल को एकीकृत करने के लिए वृद्धि अनुरोध को बढ़ा दिया। धन्यवाद। –

+0

मुझे वसंत के साथ एक छोटी सी समस्या मिली: संस्करण 3.0.3 में eval। जब अभिव्यक्ति शून्य पर मूल्यांकन करती है, तो स्ट्रिंग 'नल' मुद्रित होती है। इसके विपरीत, वसंत: मेरे प्रश्न से उदाहरण बांधना एक खाली स्ट्रिंग प्रिंट करता है जब अभिव्यक्ति शून्य पर मूल्यांकन करती है। 'शून्य' के आउटपुट को दबाने का कोई तरीका है? धन्यवाद। –

+0

क्या आप इस मुद्दे की रिपोर्ट करने के लिए http://jira.springframework.org पर जेआईआरए खोल सकते हैं? – kdonald

19

क्योंकि यह एक जोडा डेटाटाइम ऑब्जेक्ट है, और डेट ऑब्जेक्ट नहीं है, आपको अपना फॉर्मेटिंग फ़ंक्शन या कस्टम टैग लिखना होगा।

यदि आप इसे java.util में परिवर्तित कर सकते हैं। किसी भी तरह से करें, तो आप जेएसटीएल fmt टैग लाइब्रेरी में निर्मित का उपयोग कर सकते हैं।

<fmt:formatDate value="${customer.dateOfBirth}" type="both" 
     pattern="MM-dd-yyyy" /> 

लेकिन नवीनतम जल्दी से JSP आप customtags बनाने के लिए अनुमति देता है।

+0

एफएमटी लिंक टूटा हुआ प्रतीत होता है। –

+0

@noobMama आपको jsp पेज में टैगलिब को परिभाषित करने की आवश्यकता है: <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> –

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