starter play instalar framework create playframework playframework-2.4

playframework - instalar - Play Framework[2.4.x] cómo abordar los activos públicos en el archivo de enrutamiento de un submódulo



play framework starter (1)

Esta pregunta previa puede servir como línea de base para lo que los "submódulos" significan para el propósito de la discusión actual: Play Framework [2.4.x] Trabajar con Sub Modules

Si comprende un submódulo de Play, dado ese contexto, ¿cómo se ingresa la entrada de enrutamiento en el submódulo para exponer los activos de una carpeta "pública"?

Cada vez que intento hacer una entrada básica (de la siguiente manera) mi módulo raíz completo no puede compilar una sola ruta y, sin embargo, no aparece ningún error "utilizable" u otro indicador en cuanto a lo que pudo haber sucedido.

GET /assets/*file controllers.Assets.at(path="/public", file)

Los errores del compilador ocurren incluso si comente la entrada en el proyecto raíz.

Como todos mis controladores de submódulos tienen un prefijo, lo intenté (por supuesto)

GET /assets/*file controllers.submodule.Assets.at(path="/public", file)

Por desgracia, eso tampoco funciona, pero al menos recibo un error útil diciéndome que el type Assets is not a member of package controllers.submodule

¿Alguna sugerencia?

PD: Sí, también he intentado sacar la entrada del archivo de enrutamiento de la raíz en caso de que se tratara de una colisión espacial de nombres ...


Debe crear un controlador de activos en su paquete de controladores de submódulos:

package controllers.submodule class Assets extends AssetsBuilder(DefaultHttpErrorHandler)

A continuación, declare una ruta para este controlador en el archivo del enrutador (debe llamarse submodule.routes) de su submódulo:

GET /submodule/public/*file controllers.submodule.Assets.versioned(path="/public", file: Asset)

Es mejor prefijar la ruta con el nombre de su submódulo para evitar la colisión de ruta en caso de que tenga otro nombre de submódulo con entrada de ruta estática.

Una cosa más: todos sus archivos estáticos están alojados en la carpeta "lib" de su módulo raíz:

lib/submodule/css... lib/submodule/js...

Entonces debes actualizar tus puntos de vista así:

<script type="text/javascript" src="@controllers.submodule.routes.Assets.versioned("lib/submodule/js/your-submodule-script.js")"></script>

EDITAR: no olvide agregar esto a su archivo de ruta (rutas con nombre) de su módulo raíz

-> / submodule.routes