好吧,我有一个多模块项目,其中的服务包含在插件中,还有多个使用它的Web“应用程序”。
用户和播放器服务具有登录和注册方法,该方法需要通过更新会话来“登录”播放器。
此帖子:Grails get Session and Management in Service class
有一些解决方案,但似乎没有一个有效。这些位置均无法使用Webutils
import org.codehaus.groovy.grails.web.util.WebUtils
import org.grails.web.util.WebUtil
import org.grails.web.util.WebUtils
这项工作也没有:
def session = getSession(true)
有什么建议吗?
这来自插件的build.gradle:
dependencies {
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-autoconfigure"
compile "org.grails:grails-core"
compile "org.grails.plugins:events"
compile "org.grails.plugins:hibernate5"
compile "org.hibernate:hibernate-core:5.1.5.Final"
compile "org.grails.plugins:scaffolding"
console "org.grails:grails-console"
profile "org.grails.profiles:plugin"
provided "org.grails:grails-plugin-services"
provided "org.grails:grails-plugin-domain-class"
runtime "org.glassfish.web:el-impl:2.1.2-b03"
runtime "com.h2database:h2"
runtime "org.apache.tomcat:tomcat-jdbc"
testCompile "org.grails:grails-gorm-testing-support"
testCompile "org.grails:grails-plugin-testing"
}
答案 0 :(得分:1)
有什么建议吗?
是的
您可以这样做:
// grails-app/services/somepackage/SomeService.groovy
package somepackage
import grails.web.api.ServletAttributes
class SomeService implements ServletAttributes {
void someMethod() {
// you can access the session property directly from here
println session
// ...
}
}