如何在Scala中填充Wicket @SpringBeans?

时间:2011-06-18 10:19:59

标签: spring scala wicket

我有一个带有Page

的Wicket @SpringBean
class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
    @SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = null
    assertNotNull(screenDao)

我发现没有填充@SpringBean。如果screenDao是val或var,protected或private,则没有区别。

查找树我发现Component的构造函数(间接)代表其子类初始化@SpringBean,但是null的赋值是uninitializing。但是Scala需要这项任务。

如何防止此行为?

1 个答案:

答案 0 :(得分:6)

尝试

class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
    @SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = _
    assertNotNull(screenDao)

我没有尝试过这个,但我也在考虑启动Wicket / Scala项目,并看到this blog entry,这在其他方面也可能有用。

该博客引用的相关部分是

  

此外,请注意该字段被分配给下划线(_),它告诉Scala编译为NOT初始化,但保留默认状态(在本例中为null)。这是注射工作所必需的。如果你明确地将它分配给null,那么你   将覆盖Spring bean,因为在执行MyPage的构造函数之前将进行注入。