Маршруты и подпакеты в контроллерах
Я использую Play 2.1, и у меня возникают некоторые странные проблемы.
У меня есть подпакет messages
в пакете controllers
с классом i18n.java
.
Мой файл routes
выглядит следующим образом:
GET \ controllers.messages.i18n.index()
POST \ controllers.messages.i18n.process()
Теперь у меня есть форма со следующим действием:
@helper.form(action = routes.messages.i18n.process())
но это дает мне ошибку:
value messages is not a member of object controllers.routes
Я использовал субпакеты раньше в Play 2.0.4, и все получилось так, может ли кто-нибудь обнаружить какие-либо ошибки в моей конфигурации?
Файл маршрутов не жалуется, что он не может найти контроллер.
Ответы
Ответ 1
Маршрут должен быть controllers.messages.routes.i18n.process()
. Вы можете проверить каталог target/scala-2.10/src_managed
, чтобы обнаружить сгенерированные файлы.
И для информации, соглашения о кодировании Java говорят, что класс должен начинаться с прописного.
Ответ 2
FYI, в 2.2 он немного отличается.
routes.conf выглядит так:
GET /admin/stuff controllers.admin.StuffController.show()
в коде выглядит следующим образом:
controllers.admin.routes.StuffController.show()
Ответ 3
Для Play 2.4.6 пользователей Java:
Скажем, ваш контроллер (приложение) и действие (выход) com.stackoverflow.play.Application.logout()
.
Чтобы использовать его в своем шаблоне (*.scala.html
), вы делаете @com.stackoverflow.play.routes.Application.logout
(например, <a href="@com.stackoverflow.play.routes.Application.logout()">
, <form action="@com.stackoverflow.play.routes.Application.logout()" method="post">
).
Прочитайте нижнюю часть этой ссылки: https://playframework.com/documentation/2.4.x/JavaRouting