我对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")
}
}
现在的问题是,我得到了一个空指针异常:"Method抛出了'java.lang.NullPointerException‘异常。无法计算空指针
my Service Class的用法,例如在控制器中:
class SampleController {
SessionService sessionService
def selectAnything = {
sessionService.setTestvar("test-value")
render(view: "testview")
}
}
我到底做错了什么?这条路对吗?或者我必须在每个方法中都设置"session = request.session“?
希望能得到你的帮助。
非常提前感谢您。
干杯,
马可
发布于 2011-08-15 18:36:28
RequestContextHolder是从哪里来的?它在grails 3.3.8中不可见(至少在插件中)
发布于 2012-12-03 22:01:10
下面是一些示例代码,其中我从服务中提取会话数据和请求数据,而不将请求或会话对象作为参数传递给服务。
package beecomplete
import org.codehaus.groovy.grails.web.util.WebUtils
class HelperService {
public User getCurrentUser() {
def webUtils = WebUtils.retrieveGrailsWebRequest()
return User.findById(webUtils.getSession().userid)
}
public Object getModelAttribute(String key) {
def webUtils = WebUtils.retrieveGrailsWebRequest()
return webUtils.getCurrentRequest().getAttribute(key)
}
}
发布于 2014-10-14 21:18:19
对于Grails的新版本(>2.2):
import org.codehaus.groovy.grails.web.util.WebUtils
....
HttpServletRequest request = WebUtils.retrieveGrailsWebRequest().currentRequest
HttpSession session = request.session
https://stackoverflow.com/questions/7062605
复制相似问题