Подтвердить что ты не робот

Маршруты и подпакеты в контроллерах

Я использую 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, и все получилось так, может ли кто-нибудь обнаружить какие-либо ошибки в моей конфигурации?

Файл маршрутов не жалуется, что он не может найти контроллер.

4b9b3361

Ответ 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