2011-01-27 21 views
33

Zastanawiałem się, czy można zmienić domyślne pakiety z Play. Na przykład: Chcę zmienić pakiet "kontrolerów" na "com.test.controllers". Nie wiem, czy to ma jakiś sens, ale chcę tylko wiedzieć, jak to jest możliwe. Nie znalazłem nic na ten temat na stronie gry.Play Framework: Jak zmienić domyślne pakiety gry?

Odpowiedz

5

Zaktualizowano, aby rozróżnić między grą 1 i 2.

W przypadku Play 1.x nie jest to możliwe.

Nie, wszystkie kontrolery muszą znajdować się w pakiecie lub sub-pakiecie kontrolerów. Jeśli chcesz zachować strukturę com.test pakiet można zrobić controllers.com.test

uzyskać więcej informacji, see this thread.

Dla Play2.x, jest to możliwe.

Prosta odpowiedź brzmi ... zależy od wersji gry, z której korzystasz.

+0

Już nie sprawa, jak zauważono w innych odpowiedziach (na wszelki wypadek, gdy ludzie wpadną na zły pomysł). –

+1

Nie jest to takie proste. Gra 2 rzeczywiście pozwala na to, ale obecne wersje Play 1. Rozróżniam, ponieważ Play 1 i Play 2 to bardzo różne frameworki i nie jest to prosta ścieżka aktualizacji. – Codemwnci

13

Z manual:

klasa A Kontroler musi być zdefiniowana w się kontrolery pakiet i musi być podklasą play.mvc.Controller.

Możesz dodać pakiet Java przed nazwą klasy kontrolera , jeśli nie jest to zdefiniowany bezpośrednio w pakiecie kontrolerów . Pakiet sam w sobie jest niejawny, więc nie trzeba go wpisywać w postaci .

Oznacza to, że nie można zmienić pakiet controllers do com.test.controllers (ponieważ pakiet korzeń musi być controllers), ale można zmienić na controllers.com.test.

+3

Jest to teraz możliwe. Zobacz odpowiedź http://stackoverflow.com/a/9994758/808125 poniżej –

1

Istnieje dyskusja na temat tego here.

W FAQ znajduje się również this.

+0

Dodaj opisy zamiast tylko linków. Linki gniją. Zobacz https://meta.stackexchange.com/questions/144566/new-policy-on-link-only-answers –

20

Zgodnie z dokumentacją current Gra 2.0, teraz jest to możliwe:

Należy pamiętać, że podczas odtwarzania 2.0, kontrolery, modele i pakiet odsłon nazwa konwencje są teraz tylko, że i może być zmieniona w razie potrzeby (np prefiksując wszystko za pomocą com.yourcompany).

Działa to dobrze dla pustej aplikacji Play Istnieją jednak pewne szczegóły o zapoznanie się z niczego innego:

  1. Importowanie niestandardowych nazw w widoku szablonów będzie pracować dla wszelkich rodzajów, z wyjątkiem tych, które są zadeklarowane w pierwszym wierszu szablonu, które są argumentami dla funkcji scala, która jest generowana z widoku. Nasze obejście polega na dodaniu pełnej nazwy pakietu do deklaracji typów w szablonach pierwszego rzędu.
  2. Dla każdej przestrzeni nazw zdefiniowanej w pliku tras (np. Niestandardowy pakiet i pakiet domyślny dla trasy Zasoby), Play 2.0 generuje odpowiedni plik źródłowy tras w obrębie tej samej przestrzeni nazw, więc musisz zająć się poprawnym plikiem gdy np robić przekierowanie.
+0

Miałem problem ze zrozumieniem punktu 2 - zakładając, że przechodzimy z domyślnego pakietu do pakietu foo.bar, oznacza to, że wszelkie trasy zdalne w widokach muszą zostać zmienione z routes.Application.method na foo.bar.controllers.Application.method. –

+3

Załóżmy, że masz kontroler MyController z metodą obsługi nazwaną myMethod. Jeśli przeniesiesz go z pakietu "kontrolery" do "com.example.controllers", musisz (1) w szablonach Scala zmienić @ routes.MyController.myMethod() na @ com.example.controllers.routes.MyController .myMethod() i (2) w twojej klasie kontrolera, zmień wszelkie przekierowania, które on robi (np. po napisaniu formularza) z controllers.routes.MyController.someMethod() na com.example.controllers.routes.MyController.someMethod (). –

+0

Więc mam na 2.4.x - jak mam zamiar przedrostek pakietu z com.yourcompany. Mam moje 'app',' conf', 'public' i' test' w 'com/yourcompany', ale sbt nie wydaje się kompilować żadnych plików .java wewnątrz tych folderów. Nie mogę znaleźć żadnego dokumentu na ten temat. – ronaldwidha