Play Framework: Как изменить игровые пакеты по умолчанию?
Мне просто интересно, можно ли поменять пакеты по умолчанию с Play. Например: я хочу изменить пакет "controllers" на "com.test.controllers". Я не знаю, имеет ли это какой-то смысл, но я просто хочу знать, как, если это возможно. Я не нашел ничего связанного с этим на сайте игры.
5 ответов
Обновлен, чтобы сделать различие между play1 и 2 ясным.
Для Play 1.x это невозможно.
Нет, все контроллеры должны быть в пакете или субпакете контроллеров. Если вы хотите сохранить com.test
структура пакета, вы можете сделать controllers.com.test
Для получения дополнительной информации см. Эту тему.
Для Play2.x это возможно.
Поэтому простой ответ... это зависит от того, какую версию Play вы используете.
Согласно текущей документации Play 2.0, это теперь возможно:
Обратите внимание, что в Play 2.0 соглашения об именах пакетов контроллеров, моделей и представлений теперь являются именно такими и могут быть изменены при необходимости (например, добавление префикса в com.yourcompany).
Это хорошо работает для пустого приложения Play, однако есть некоторые детали, на которые следует обратить внимание:
- Импорт пользовательских пространств имен в шаблоны представлений будет работать для любых типов, кроме тех, которые объявлены в первой строке шаблона, которые являются аргументами для функции визуализации scala, генерируемой из представления. Наш обходной путь - добавить полное имя пакета в объявления типов в первой строке шаблонов представления.
- Для каждого пространства имен, определенного в файле маршрутов (например, пользовательский пакет и пакет по умолчанию для маршрута Assets), Play 2.0 генерирует соответствующий исходный файл маршрутов в том же пространстве имен, поэтому вам нужно позаботиться о том, чтобы обращаться к правильному файлу, например, при выполнении перенаправление.
Из руководства:
Класс Controller должен быть определен в пакете controllers и должен быть подклассом play.mvc.Controller.
Вы можете добавить пакет Java перед именем класса Controller, если оно не определено непосредственно в пакете controllers. Сам пакет контроллеров неявный, поэтому вам не нужно его указывать.
Это означает, что вы не можете изменить свой controllers
пакет для com.test.controllers
(потому что корневой пакет должен быть controllers
), но вы можете изменить на controllers.com.test
,
Поздний ответ, но для людей, которые могут столкнуться с такой же ситуацией в 2022 году, это возможно с документом Play 2.8.x Scala, но также справедливо и для Java .
Вы можете определить свой собственный пакет com.test.controllers (даже в корневой папке приложения ). После этого вам нужно определить маршруты для его классов, чтобы они соответствовали обратной маршрутизации , как указано в документации здесь .
Например, если вы определили класс foo.java с индексом метода , который доступен в конечной точке /index , ваш файл маршрутов должен отражать его следующим образом:
GET /index com.test.controllers.foo.index
И вы можете получить к нему доступ из файла HTML, используя вспомогательную функцию (обратная маршрутизация) следующим образом:
@com.test.controllers.routes.foo.index()