Grails:在用户会话期间存储数据的最佳方法
以下哪种方法被认为是在用户会话期间在grails中存储数据的推荐方法?
>在实际会话中存储一堆个别变量. 解决方法
我喜欢使用会话范围的服务来做这种事情.使用此方法,您可以将会话范围服务的代理注入到全局范围的服务(或控制器)中,这意味着您无需担心跟踪放入会话的内容.
有一个很好的小教程here,它向您展示如何混合不同范围的服务.看起来该教程的作者也编写了一个插件来简化这个过程(虽然我还没有尝试过这个插件). 编辑: 这是一个展示你如何设置它的例子.实际上使用服务代理将内容传递给您的视图: 创建一个服务,用于保存会话范围的内容,例如用户购物车或其他任何内容.它只是一个常规服务(引用其他服务等),但您可以将特定于会话的内容存储为成员变量 – class MySessionScopedService { def currentUser def shoppingCart ... } 在resources.groovy中,为您的服务设置会话范围的代理.您不是直接将MySessionScopedService注入其他服务,而是为其注入代理. beans = { mySessionScopedServiceProxy(org.springframework.aop.scope.ScopedProxyFactoryBean) { targetBeanName = 'mySessionScopedService' proxyTargetClass = true } } 最后,当您想引用您的服务时,您引用代理(请注意我引用mySessionScopedServiceProxy而不是mySessionScopedService).您可以在任何全局范围的组件中引用代理,并且在运行时,Spring将为当前会话注入正确的代理. class MyController { def mySessionScopedServiceProxy def someOtherService def index() { [shoppingCart: mySessionScopedServiceProxy.shoppingCart,currentUser: mySessionScopedServiceProxy.currentUser] } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |