को सहेजने के लिए ऑब्जेक्ट कैसे प्राप्त करूं, मैं grails के लिए नया हूं और एक फॉर्म बनाने की कोशिश कर रहा हूं जो उपयोगकर्ता को उस साइट के लिए अपने खाते से जुड़े ईमेल पते को बदलने की अनुमति देता है।Grails, मैं
यह उपयोगकर्ता को उनके वर्तमान पासवर्ड के लिए और नए ईमेल पते के लिए भी पूछता है जो वे उपयोग करना चाहते हैं। यदि उपयोगकर्ता गलत पासवर्ड या एक अवैध ईमेल पता दर्ज करता है तो उसे एक उचित त्रुटि संदेश से खारिज कर देना चाहिए।
अब ईमेल सत्यापन को grails में बाधाओं के माध्यम से किया जा सकता है, लेकिन पासवर्ड परिवर्तन को उनके वर्तमान पासवर्ड से मेल खाना पड़ेगा। मैंने इस चेक को सेवा वर्ग पर एक विधि के रूप में लागू किया है। नीचे
कोड देखें:
def saveEmail =
{
def client = ClientUser.get(session.clientUserID)
client.email = params.email
if(clientUserService.checkPassword(session.clientUserID , params.password) ==false)
{
flash.message = "Incorrect Password"
client.discard()
redirect(action:'changeEmail')
}
else if(!client.validate())
{
flash.message = "Invalid Email Address"
redirect(action:'changeEmail')
}
else
{
client.save();
session.clientUserID = null;
flash.message = "Your email address has been changed, please login again"
redirect(controller: 'clientLogin' , action:'index')
}
}
अब मैं क्या देखा है कि अजीब था कि अगर मैं एक अमान्य ईमेल तो दर्ज की गई यह परिवर्तन (उम्मीद के रूप में) नहीं बचा होगा, लेकिन अगर मैं गलत पासवर्ड और एक में प्रवेश किया वैध ईमेल तो यह परिवर्तनों को सहेज लेगा और उन्हें डेटाबेस में वापस भी लिख देगा, भले ही यह सही "अमान्य पासवर्ड" त्रुटि संदेश देगा।
मैं सभी को/तो अगर अन्यथा/तो ब्लॉक में पाया गया तो यह तोड़ने वाले बिंदुओं को तोड़ दिया गया था और पाया कि यह पहली बार अगर कथन की उम्मीद है और दूसरों को मार नहीं रहा है, तो यह सहेजने के लिए कॉल पर कभी नहीं आएगा() विधि, फिर भी यह वैसे भी बचाया गया था।
थोड़ा सा शोध करने के बाद मैं उपरोक्त कोड में उपयोग किए जाने वाले त्याग() विधि के लिए प्रलेखन में आया था। तो मैंने इसे जोड़ा लेकिन अभी भी कोई फायदा नहीं हुआ। मैंने फिर से डीबी से क्लाइंट ऑब्जेक्ट को फिर से लोड करने का प्रयास करने की कोशिश की लेकिन फिर भी कोई पासा नहीं।
यह बहुत निराशाजनक है और मैं किसी भी मदद के लिए आभारी हूं, क्योंकि मुझे लगता है कि यह निश्चित रूप से एक जटिल आवश्यकता नहीं होनी चाहिए!
client.discard() इसे करने का तरीका होना चाहिए, क्या आप एकीकरण परीक्षण में समस्या को पुन: उत्पन्न कर सकते हैं? आप Grails का किस संस्करण का उपयोग कर रहे हैं? – leebutts
मैंने अभी कोड पर एकीकरण परीक्षण की कोशिश की है, विचित्र रूप से पर्याप्त व्यवहार करना प्रतीत होता है जैसा कि मैं चाहता था लेकिन जब मैंने इसे सामान्य रूप से वेब के माध्यम से किया तो मुझे एक ही समस्या मिली। मैं अपना टेस्ट कोड पोस्ट करूंगा लेकिन मुझे यह नहीं पता कि यह कैसे करना है, यह मुझे बताता है कि यह बहुत सारे वर्ण हैं – user350325
आपको नीचे दिए गए उत्तर को स्वीकार करना चाहिए! – oligofren