我升级到Play 2.5,并将所有内容移至依赖注入。 UiCommonService
类现在可以使用了,可以注入,以前是静态的。
这是控制器的外观。
public Result index() {
if (CurrentUserService.isAuthenticated()) {
return ok(mainPage.render(CurrentUserService.getUserStateVariables(),
CurrentUserService.getCurrentUser(),
configService.getGoogleAnalyticsKey()));
} else {
return redirect("/login");
}
}
这是我的scala模板的样子,它使用@import
命令来使用类中的静态方法。
@(variables: String, authorisedUser: models.security.UserSession, gaKey: String)
@import services.ui.UiCommonService
@layout.masterPage(UiCommonService.getSimpleHeaderAttributes(), styles){
// my custom layout code
}
我读到要使用依赖注入,必须将它包含在@this属性中。
@this(uiCommonService: services.ui.UiCommonService)
@(variables: String, authorisedUser: models.security.UserSession, gaKey: String)
@layout.masterPage(uiCommonService.getSimpleHeaderAttributes(), styles){
// my custom layout code
}
但是现在我的控制器controller.index()
方法出现错误。
mainPage.scala.html:1: too many arguments for method apply: ()play.twirl.api.HtmlFormat.Appendable in class mainPage