Jouer Cadre @routes.Les actifs.à l'Erreur de Compilation
Je suis en utilisant Jouer 2.4.0 et j'ai essayé de suivre le tutoriel à partir de la page principale: https://playframework.com/
qui est pour Jouer 2.3 et après la résolution d'un couple de questions au sujet des changements dans la Ebean ORM à partir de la version 2.3, 2.4, je suis bloqué avec le message d'erreur suivant:
Compilation error
value at is not a member of controllers.ReverseAssets
Mon index.scala.html
:
@(message: String)
@main("Welcome to Play") {
<script type='text/javascript' src="@routes.Assets.at("javascripts/index.js")"></script>
<form action="@routes.Application.addPerson()" method="post">
<input type="text" name="name" />
<button>Add Person</button>
</form>
<ul id="persons">
</ul>
}
Et mon routes
fichier:
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / controllers.Application.index()
POST /person controllers.Application.addPerson()
GET /persons controllers.Application.getPersons()
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
J'ai ce même exemple de travail ok avec Jouer 2.3.9
Et je ne peux pas voir quelque chose de différent sur le travail avec les publics actifs dans les docs pour la 2.4.0: https://www.playframework.com/documentation/2.4.0/Assets
Donc... toute aide serait appréciée.
- Avez-vous essayez d'exécuter
sbt clean
une fois? - J'ai essayé
activator clean
etactivator clean-files
, mais j'ai eu la même erreur. - J'ai aussi essayé de supprimer manuellement le dossier cible et en cours d'exécution
activator compile
et j'ai eu le même message d'erreur. - Autant que je me souvienne, j'ai eu une erreur similaire migration de jouer 2.4. Mes biens route ressemble à ceci:
GET /assets/*file controllers.Assets.versioned(path="/public", file: Asset)
. Notez l'utilisation deversioned
au lieu deat
. Peut-être cela peut vous aider. Si pas, il peut être utile si vous validez votre configuration des routes. - J'ai oublié de mentionner que vous avez aussi de changer
@routes.Assets.at("javascripts/index.js")
à@routes.Assets.versioned("javascripts/index.js")
dans votreindex.scala.html
- Vous avez entièrement raison, il fonctionne. Merci!
- créer la réponse s'il vous plaît, de sorte qu'il peut être accepté et upvoted.
Vous devez vous connecter pour publier un commentaire.
Bon, pour résumer la solution: Play vous permet de servir vos actifs de deux façons différentes. L'ancienne et la nouvelle méthode des empreintes introduit avec sbt-web. Dans les deux cas, assurez-vous d'utiliser le droit d'appel dans vos fichiers de vue:
Empreintes digitales actifs
C'est la manière de servir de l'actif dans le jeu. Les empreintes digitales de l'actif d'une agressive stratégie de mise en cache. Vous pouvez lire plus sur ce sujet ici: https://playframework.com/documentation/2.4.x/Assets
routes config:
Assurez-vous que le type de
file
est indiqué commeAsset
appel vues:
Ancienne actifs
C'est en gros la méthode utilisée avant l'introduction de sbt-web.
routes config:
appel vues: