/ / ग्रिल्स डेटा बाइंडिंग डेट फील्ड के लिए असफल - json, grails, data-बाइंडिंग, अनुरोध

Grails डेटा बाध्यकारी तिथि फ़ील्ड के लिए विफल - जेसन, grails, डेटा बाध्यकारी, अनुरोध

मैं अनुरोधित .JSON डेटा के लिए नेस्टेड डोमेन ऑब्जेक्ट के साथ डोमेन वर्ग को बांधना चाहता हूं यह नेस्टेड डोमेन वर्ग में दिनांक के प्रकार को छोड़कर ठीक काम करता है यह हमेशा शून्य देता है। यहाँ request.json है

[..., cardInfo:[expiryDate:2016-07-21, ccv:3455, cardNumber:4111111111111111], ....]

मैंने कई तरीकों से इन जोंस को बांधने की कोशिश की:

 MyClass myClass=new MyClass(request.JSON)

तथा

myClass.properties=request.JSON
bindData(myClass,request.JSON)
bindData(myClass.cardInfo,request.JSON.cardInfo)

बाध्यकारी समाप्ति के लिए कुछ भी काम नहीं किया। यह एक बग है या कुछ गलत है जो मैं कर रहा हूं?

अद्यतन करें:

मैं 2.4.2 ग्रेल्स का उपयोग कर रहा हूं। मेरे पास यह लाइन मेरी कॉन्फिगर फाइल में भी है

grails.databinding.dateFormats = ["dd-MM-yyyy","MM-dd-yyyy","yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss.S"]

उत्तर:

उत्तर № 1 के लिए 1

आपने निश्चित रूप से जानने के लिए पर्याप्त जानकारी प्रदान नहीं की है, लेकिन मुझे उम्मीद है कि आपके दिनांक प्रारूप के बारे में जानने के लिए बाइंडर isn "कॉन्फ़िगर नहीं किया गया है। आप कुछ इस तरह की कोशिश कर सकते हैं:

class MyClass {
@org.grails.databinding.BindingFormat("yyyy-MM-dd")
Date expiryDate
}

आप config.groovy में डिफ़ॉल्ट तिथि प्रारूप के रूप में भी कॉन्फ़िगर कर सकते हैं:

// grails-app/conf/Config.groovy
grails.databinding.dateFormats = ["yyyy-MM-dd", "MMddyyyy", "yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd"T"hh:mm:ss"Z""]

देख http://grails.org/doc/latest/guide/theWebLayer.html#dataBinding अधिक जानकारी के लिए।

मुझे आशा है कि वह मदद करेंगे।


जवाब के लिए 0 № 2

मुझे लगता है कि यहां दो समस्याएं हैं:

  1. आपके JSON के उद्धरणों में दिनांक मान होना चाहिए (i)ई। expiryDate: "2016-07-21")। उद्धरण के बिना, यह संभवतया केवल आरंभिक संख्यात्मक भाग (2016) को बाध्यकारी है, जो आपके कॉन्फ़िगर किए गए स्वरूपों में से एक नहीं है।
  2. प्रतीत होता है कि एक ग्रेग बग है (हम "2.5 पर फिर से।0) नेस्टेड डोमेन क्लासेस में बाइंडिंग डेट्स के साथ (यही कारण है कि मैं "यहाँ हूँ"। यदि आप इसे ठीक से बाँधते हैं (मतलब, तारीख "स्वरूप grails.databinding.dateFormats में परिभाषित एक प्रारूप से मेल खाता है), तिथि विशेषता ठीक है । हालांकि, अगर वहाँ "बेमेल (अर्थ, मान" "2016" है, लेकिन विन्यास "yyyy-MM-dd" है, तो बुरा मान चुपचाप एक सत्यापन त्रुटि के बिना खारिज कर दिया जाता है। "" मैंने इस व्यवहार को अपने निहित नेस्टेड वर्गों के साथ देखा है। और एक पतले रिश्ते में, और मुझे लगता है कि आपके एक्सपायरीड क्यों अशक्त रहते हैं।