Grails 在 Service 类中获取 Session 和 Management

2024-04-21

我对 Grails 会话有疑问。我正在考虑为我的会话处理提供一个服务类。所以我创建了一个名为“SessionService”的类(在 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")
    }
}

现在的问题是,我得到一个空指针异常:“方法抛出“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”?

希望得到您的帮助。

预先非常感谢您。

Cheers,

Marco


你必须做类似的事情

def session = RequestContextHolder.currentRequestAttributes().getSession()

在您的每一种服务方式中。但我不清楚为什么你需要这样的服务。您始终可以像这样访问控制器中的会话......

session.someAttribute = "someValue"

基督教

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails 在 Service 类中获取 Session 和 Management 的相关文章

随机推荐