प्रश्न: अनुरोध के साथ स्वचालित आदेश ऑब्जेक्ट बाध्यकारी करने का कोई तरीका है। जेसन डेटा?Grails कमांड ऑब्जेक्ट: अनुरोध कैसे लोड करें। इसमें जसन?
class ProfileCommand{
int id
String companyName
static constraints = {
companyName blank: false
id nullable: false
}
@Override
public String toString() {
return "ProfileCommand{id=$id, companyName='$companyName'}";
}
}
और की मेरी नियंत्रक विधि हस्ताक्षर:
def update(ProfileCommand command) {...}
मैं अपने आदेश वस्तु में request.JSON
डेटा को कैसे प्राप्त कर सकते हैं
मेरी grails नियंत्रक में इस सरल कमान वस्तु को देखते हुए?
अब तक, एक ही रास्ता मैं इसे update()
विधि के भीतर मैन्युअल रूप से आदेश वस्तु बनाने के लिए है करने के लिए सक्षम किया गया है, निर्माता तर्क के रूप में request.JSON में गुजर:
def command = new ProfileCommand(request.JSON)
log.debug "Command object contents: $command"
ऊपर डिबग कमांड का उत्पादन:
Command object contents: ProfileCommand{id=1, companyName='Blub Muckers'}
जो वही है जो मैं चाहता हूं (उपर्युक्त समाधान के लिए ओलिवर टायन्स के लिए एक बड़ा चिल्लाओ)। दुर्भाग्य से, command.validate()
बुला के बाद मैं बनाने के आदेश के बाद अपवाद पैदा करता है:
Class org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
Message Tag [validate] is missing required attribute [form]
मैं v2.0.3 उपयोग कर रहा हूँ, यूआरआई एक ही अपवाद डब्ल्यू/v2.0.4 का उत्पादन किया।
अद्यतन प्रति इयान grails मेलिंग सूची पर रॉबर्ट्स, आप कमांड वर्ग के लिए @Validateable
टिप्पणी जोड़ने के लिए validate()
काम करने के लिए प्राप्त करने की आवश्यकता। धन्यवाद, इयान!
यह काम करेगा। मैं इसे उत्तर के रूप में चिह्नित करूंगा जब तक कि किसी और के पास कोई अन्य सुझाव न हो। धन्यवाद, एक्वाटोड! –
मदद करने के लिए खुशी हुई। मैं उस बिट को हटा दूंगा जो @Validateable एनोटेशन द्वारा तय किया गया है। – Aquatoad
पैराम्स के साथ params.k = v को प्रतिस्थापित करें [k] = v - अन्यथा यह काम नहीं करेगा ... –