Подтвердить что ты не робот

Play Framework @routes.Assets.at Ошибка компиляции

Я использую Play 2.4.0, и я стараюсь следовать руководству с главной страницы: https://playframework.com/ который для Play 2.3 и после решения пары вопросов об изменениях в Ebean ORM с версии 2.3 до 2.4, я застрял со следующей ошибкой:

Compilation error

value at is not a member of controllers.ReverseAssets

Мой 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>
}

И мой файл 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)

У меня есть тот же пример, который работает нормально с Play 2.3.9

И я не вижу ничего похожего на работу с публичными активами в документах для 2.4.0: https://www.playframework.com/documentation/2.4.0/Assets

Итак... любая помощь будет оценена.

4b9b3361

Ответ 1

Хорошо, чтобы подвести итог решению: Play позволяет вам обслуживать ваши активы двумя разными способами. Старомодный и новый метод отпечатков пальцев, введенный с помощью sbt-web. В любом случае убедитесь, что вы используете правильный вызов в своих файлах просмотра:

Отпечатки пальцев

Это рекомендуемый способ обслуживания активов в игре. Фингерпринтированные активы используют агрессивную стратегию кэширования. Вы можете узнать больше об этой теме: https://playframework.com/documentation/2.4.x/Assets

маршрут config:

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

Убедитесь, что тип file указан как Asset

вызов в представлениях:

@routes.Assets.versioned("an_asset")


Старомодные активы

Это в основном метод, используемый до внедрения sbt-web.

маршрут config:

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

вызов в представлениях:

@routes.Assets.at("an_asset")