如何在Scala中填充Wicket @SpringBeans?

Dun*_*gor 3 spring wicket scala

我有一个检票Page@SpringBean

class ScreenDetailsPage(parameters: PageParameters) extends BasePage(parameters) {
    @SpringBean(name = "screenDAO") protected var screenDao: DAO[Screen] = null
    assertNotNull(screenDao)
Run Code Online (Sandbox Code Playgroud)

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

查找树,我发现Component(间接)的构造函数@SpringBean代表其子类初始化s,但是对null的赋值是uninitializing它.但Scala要求分配.

我该如何防止这种行为?

Don*_*oby 6

尝试

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

我没有尝试过这个,但我也在考虑启动Wicket/Scala项目,并看到 这个博客条目,这在其他方面也可能有用.

该博客引用的相关部分是

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