मुझे Grails सत्र में कोई समस्या है। मैं अपने सत्र हैंडलिंग के लिए सर्विस क्लास रखने के बारे में सोच रहा था। इसलिए मैंने "सत्र सेवा" नामक एक कक्षा बनाई (grails-app/services/grails /) के तहत।ग्रेल्स सर्विस क्लास में सत्र और प्रबंधन प्राप्त करते हैं
class SessionService {
static transactional = true
GrailsWebRequest request = RequestContextHolder.currentRequestAttributes()
GrailsHttpSession session = request.session
def setTestvar(String value) {
if (session != null)
session.setAttribute("sTeststring", value)
}
def getTestvar() {
if (session != null)
session.getAttribute("sTeststring")
}
}
समस्या है कि मैं एक Nullpointer-अपवाद मिलता है,:। "विधि फेंक दिया 'java.lang.NullPointerException' अपवाद org.codehaus.groovy.grails.web.servlet.mvc.GrailsHttpSession का मूल्यांकन नहीं कर सकते .ToString() "।
मेरी सेवा कक्षा का उपयोग उदा। एक नियंत्रक में:
class SampleController {
SessionService sessionService
def selectAnything = {
sessionService.setTestvar("test-value")
render(view: "testview")
}
}
मैं यहां क्या गलत कर रहा हूं? क्या यह सही तरीका है? या क्या मुझे हर विधि में "session = request.session" सेट करना है?
आपकी मदद करने की उम्मीद है।
अग्रिम में बहुत बहुत धन्यवाद।
चीयर्स,
मार्को
हे ईसाई, धन्यवाद। लेकिन कोई "getSession()" नहीं है - वर्तमान RequestAttributes पर उपलब्ध विधि। "सत्र में हेरफेर (सेटिंग/हो रहा है)" सीधे त्रुटि-प्रवण हो सकता है, मैं इसे एक सत्र में परिवर्तनीय नामकरण और हैंडलिंग से बचाना चाहता हूं ;-) – grailsInvas0r
आपने यह कैसे देखा कि sessionSession() उपलब्ध नहीं है? मैंने एक grails कंसोल में कोड की कोशिश की और यह काम किया। – user852518
ओह मुझे क्षमा मांगना है, यह काम करता है। लेकिन मेरे इंटेलिजे ने इसे रेखांकित किया है कि यह विधि मौजूद नहीं है: -ओ प्रत्येक दस्तावेज़ में यह उपलब्ध नहीं है। केवल पुराने Google परिणाम इस समाधान को दिखाते हैं। मुझे यकीन नहीं है कि यह भविष्य में काम करता है ?! मैं आश्चर्यचकित हूं: -O मेरा समाधान अब था: ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); वापसी servletRequestAttributes.getRequest()। GetSession (सत्य); – grailsInvas0r