Zaakceptowanych odpowiedź jest dobra, ale nie obejmuje przypadek, w którym kontroler jest w sub-pakietu, tj: controllers.applications.MyFavouriteApplication.show()
Ponieważ miałem trudności ze znalezieniem odpowiedzi, będę go zakładać tutaj.
Aby umieścić non-scoped odnośnik do szablonu, właściwy wzór jest @controllers.{sub-packages if any}.routes.{your class}.{your method}()
Więc w tym przypadku byłoby @controllers.applications.routes.MyFavouriteApplication.show()
przypadku używania zalecanego Odtwórz wzorzec używania @Inject
stworzyć singleton obiekty kontrolera, a jeśli myśli prawidłowa odpowiedź była @controllers.applications.MyFavouriteApplication.show()
, to pojawi się błąd jak poniżej:
Object MyFavouriteApplication is not a member of controllers.applications. Note: class MyFavouriteApplication exists, but it has no companion object.
Biorąc pod uwagę, że już dostarczyłeś adnotację @Inject()
@Singleton
, wydaje się to naprawdę bardzo dziwnym błędem. Może to sprawić, że zapytasz, czy prawidłowo budowałeś projekt. Ustalenie prawdziwej przyczyny może kosztować cię znacznie we krwi i skarbie.
co, jeśli mój kontroler jest w pakietach podrzędnych? załóżmy, że jest w 'com.mycompany.myproduct.controllers.LoginController.index()' – Zennichimaro