2011-01-27 16 views

Respuesta

5

Actualizada para hacer que la distinción entre play1 y 2 sea clara.

Para Play 1.x, esto no es posible.

No, todos los controladores deben estar en un paquete o subpaquete de controladores. Si quería mantener una estructura com.test paquete, puede hacer controllers.com.test

Para obtener más información, see this thread.

Para Play2.x, esto es posible.

Así que la respuesta simple es ... depende de la versión de Play que estés utilizando.

+0

Ya no es el caso, como se señala en otras respuestas (solo en caso de que la gente tenga una idea equivocada). –

+1

no es así de simple. De hecho, Play 2 sí permite esto, pero las versiones actuales de Play 1. Hago la distinción porque Play 1 y Play 2 son marcos muy diferentes, y no es una simple ruta de actualización. – Codemwnci

13

Desde el manual:

clase A Controller debe definirse en los controladores paquete y debe ser una subclase de play.mvc.Controller.

se puede añadir un paquete de Java antes de que el nombre de la clase controlador si no está definido directamente debajo de los controladores paquete. El controlador paquete está implícito, por lo que no necesita para especificarlo.

Esto significa que no se puede cambiar su paquete controllers a com.test.controllers (debido a que el paquete raíz debe ser controllers), pero se puede cambiar a controllers.com.test.

+3

Ahora es posible. Consulte la respuesta http://stackoverflow.com/a/9994758/808125 debajo de –

1

Hay una discusión de este here.

También hay this en las Preguntas frecuentes.

+0

Agregue descripciones en lugar de solo enlaces. Enlaces podridos Consulte https://meta.stackexchange.com/questions/144566/new-policy-on-link-only-answers –

20

De acuerdo con la current Juego documentación 2.0, esto es ahora posible:

Nótese que en Juego 2.0, los controladores, modelos y paquetes vistas convenios de nombre ahora son sólo eso y se puede cambiar si es necesario (por ejemplo, como prefijo todo con com.yourcompany).

Esto funciona bien para una aplicación vacía Play, Sin embargo, hay algunos detalles a tomar nota de cualquier otra cosa:

  1. Importación de espacios de nombres personalizados en plantillas de vista funcionará para cualquier tipo excepto aquellos que son declaró en la primera línea de una plantilla, que son los argumentos para la función scala que se genera fuera de una vista. Nuestra solución es agregar el nombre completo del paquete para escribir declaraciones en la primera línea de plantillas de vista.
  2. Para cada espacio de nombres definido en el archivo de rutas (por ejemplo, un paquete personalizado y el paquete predeterminado para la ruta de Activos), Play 2.0 genera un archivo fuente de rutas correspondiente dentro del mismo espacio de nombres, por lo que debe tener cuidado cuando por ejemplo haciendo redirección
+0

Tuve algunos problemas para entender el punto 2: suponiendo que pasamos del paquete predeterminado al paquete foo.bar, significa que cualquier ruta remota en las vistas debe cambiar de routes.Application.method a foo.bar.controllers.Application.method. –

+3

Digamos que tiene un controlador MyController con un método de manejo llamado myMethod. Si lo mueve desde el paquete "controladores" a "com.example.controllers", tiene que (1) en sus plantillas de Scala, cambiar @ routes.MyController.myMethod() a @ com.example.controllers.routes.MyController .myMethod() y (2) en su propia clase de controlador, cambie cualquier redirección que realice (por ejemplo, después de POSTear un formulario) desde los controladores.routes.MyController.someMethod() a com.example.controllers.routes.MyController.someMethod () –

+0

Así que estoy en 2.4.x - ¿cómo hago prefixing el paquete con com.yourcompany. Tengo mi 'app',' conf', 'public' y' test' debajo de 'com/yourcompany', pero sbt no parece compilar ningún archivo .java dentro de esas carpetas. Parece que no puedo encontrar ningún documento al respecto. – ronaldwidha

Cuestiones relacionadas