web-dev-qa-db-fra.com

Erreur de compilation Play Framework @ routes.Assets.at

J'utilise Play 2.4.0 et j'ai essayé de suivre le tutoriel de la page principale: https://playframework.com/ qui est pour Play 2.3 et après avoir résolu quelques problèmes concernant les changements dans Ebean ORM de la version 2.3 à 2.4, je suis coincé avec l'erreur suivante:

Compilation error

value at is not a member of controllers.ReverseAssets

Ma 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 fichier routes:

# 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 qui fonctionne bien avec Play 2.3.9

Et je ne vois rien de différent concernant le travail avec les actifs publics dans les documents pour le 2.4.0: https://www.playframework.com/documentation/2.4.0/Assets

Alors ... toute aide serait appréciée.

36
Daniel Romero

D'accord, pour résumer la solution: Play vous permet de diffuser vos ressources de deux manières différentes. L'ancienne méthode et la nouvelle méthode d'empreintes digitales introduites avec sbt-web. Dans les deux cas, assurez-vous d'utiliser le bon appel dans vos fichiers d'affichage:

Actifs dactyloscopiques

Il s'agit de la méthode recommandée pour servir les ressources en jeu. Les ressources à empreintes digitales utilisent une stratégie de mise en cache agressive. Vous pouvez en savoir plus sur ce sujet ici: https://playframework.com/documentation/2.4.x/Assets

configuration des routes:

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

Assurez-vous que le type de file est indiqué comme Asset

appel dans les vues:

@routes.Assets.versioned("an_asset")


Actifs à l'ancienne

Il s'agit essentiellement de la méthode utilisée avant l'introduction de sbt-web.

configuration des routes:

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

appel dans les vues:

@routes.Assets.at("an_asset")
67
Roman