Grails springSecurityService的默认字段值
我肯定我以前见过这个,但是我现在找不到任何关于它的东西。当我尝试这样做时:Grails springSecurityService的默认字段值,grails,spring-security,Grails,Spring Security,我肯定我以前见过这个,但是我现在找不到任何关于它的东西。当我尝试这样做时: class Foo { def springSecurityService User userInstance = springSecurityService.currentUser } 在编译快结束时,我发现以下错误: 无法获取null对象的属性“currentUser” 我不能为服务设置默认用户吗 运行Grails2.2.0 Foo是一个域类 编辑 我使用javax.annotations.
class Foo {
def springSecurityService
User userInstance = springSecurityService.currentUser
}
在编译快结束时,我发现以下错误:
无法获取null对象的属性“currentUser”
我不能为服务设置默认用户吗
- 运行Grails2.2.0
是一个域类Foo
javax.annotations.PostConstruct
尝试了下面的解决方案,但从未调用带注释的方法。我不认为它被调用是因为我在它里面放了一个println
语句,它没有被调用。我正在用newfoo()实例化我的类
试试这个
import javax.annotation.PostConstruct
class Foo {
def springSecurityService
User userInstance
@PostConstruct
private void init() {
userInstance = springSecurityService.currentUser
}
}
代码无法工作的原因是,在springSecurityService
被注入依赖项之前,您试图设置userInstance
我假设
Foo
是一个域类,如果它是src/groovy
中的一个类,那么这种方法将不起作用,因为这些类不受依赖注入的约束。是的,它是一个域类。我刚刚得出结论,依赖注入还没有发生,也不确定最好的解决办法是什么。谢谢呵呵。嗯,我没有得到编译错误,但是从来没有调用过init()
:|@CharlesWood您到底为什么需要将当前用户存储在字段中,考虑到您始终可以从springSecurityService
访问它,因为Foo
正在被持久化,我希望数据库记住当前用户是谁,以供以后参考,与域类中的任何字段相同。