首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类中设置Groovlet会话对象?

在类中设置Groovlet会话对象?
EN

Stack Overflow用户
提问于 2011-11-30 14:45:35
回答 1查看 792关注 0票数 1

我有一个Groovy类MyRequest,用于处理每个HTTP请求。在构造函数中,该类将实例变量_session设置为request.getSession(true)的值(其中request是当前的HttpServletRequest)。

在我的Groovy脚本中,我做的第一件事就是创建一个MyRequest实例。其次,我检查Groovlet session对象的一个特定属性。对于我对脚本的第一个请求,这个session对象是空的,所以我得到一个空对象引用错误。对于脚本的第二个请求,定义了session对象,没有发生错误。

根据Groovlet文档,这种情况应该是预期的,因为在我的脚本中检查Groovlet的session对象是否存在之后,我没有显式地设置它。

我真的不想增加更多的复制粘贴代码到我的脚本(和任何未来的项目)。这是我创建MyRequest对象的原因之一--为任何实例化它的脚本定义session对象。那么,如何在session类中为我的Groovy脚本定义MyRequest对象?我可以以某种方式使用metaClass对象吗?

EN

回答 1

Stack Overflow用户

发布于 2011-11-30 18:26:41

Groovlet免费为您提供会话范围,不需要request.getSession()。

如果从您的脚本中可以这样做:

代码语言:javascript
复制
new MyRequest(session)

然后给出一个松散的、非类型化的MyRequest类,如下所示:

代码语言:javascript
复制
class MyRequest {
    def _session
    MyRequest(sess) {
        _session = sess
    }

    def nullSafe() {
        if(_sess?.notExist) // do something...
    }
}

MyRequest方法可以安全地引用会话(前提是使用groovy安全(?)(操作员)。我已经离开了Groovlet,但是当我在滚动自己的Groovy时,Groovy专家建议在将会话、请求、响应等从脚本作用域传递到对象时使用线程局部变量.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8327694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档