J'ai un problème avec Grails Session. Je pensais avoir une classe de service pour la gestion de ma session. J'ai donc créé une classe appelée "SessionService" (sous grails-app/services/grails /).Les grils obtiennent la session et la gestion dans la classe de service
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")
}
}
Le problème est maintenant, que je reçois un Nullpointer-Exception:. "méthode a jeté exception 'java.lang.NullPointerException' Impossible d'évaluer org.codehaus.groovy.grails.web.servlet.mvc.GrailsHttpSession .ToString() ".
Utilisation de ma classe de service, par ex. dans un contrôleur:
class SampleController {
SessionService sessionService
def selectAnything = {
sessionService.setTestvar("test-value")
render(view: "testview")
}
}
Qu'est-ce que je fais mal ici? Est-ce la bonne façon? Ou dois-je définir "session = request.session" dans chaque méthode?
Nous espérons obtenir de l'aide de votre part.
Merci beaucoup d'avance.
Cheers,
Marco
Salut Christian, merci. Mais il n'y a pas de méthode "getSession()" disponible sur currentRequestAttributes. Faire "La manipulation de session (paramétrer/obtenir)" peut directement être sujet aux erreurs, je veux éviter qu'il garde une variable de session nommant et manipulant en un seul endroit ;-) – grailsInvas0r
Comment avez-vous vérifié que getSession() n'est pas disponible? J'ai essayé le code dans une console de grails et cela a fonctionné. – user852518
Oh, je dois m'excuser, ça marche. MAIS mon IntelliJ souligne que cette méthode n'existe pas: -O Aussi dans chaque documentation ce n'est pas disponible. Seuls les anciens résultats google montrent cette solution. Je ne suis pas sûr que cela fonctionne à l'avenir ?! Je suis surpris: -O Ma solution était maintenant: ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes(); return servletRequestAttributes.getRequest(). GetSession (true); – grailsInvas0r