web-dev-qa-db-ja.com

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

だから...どんな助けも感謝します.

36
Daniel Romero

さて、ソリューションを要約すると、Playでは2つの異なる方法でアセットを提供できます。 sbt-webで導入された昔ながらの新しいフィンガープリント法。いずれの場合でも、ビューファイルで正しい呼び出しを使用していることを確認してください。

指紋資産

これは、アセットをインプレイで提供するための推奨される方法です。フィンガープリントされたアセットは、積極的なキャッシュ戦略を利用します。このトピックの詳細については、こちらをご覧ください: https://playframework.com/documentation/2.4.x/Assets

routes config:

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

fileのタイプがAssetとして示されていることを確認してください

ビューで呼び出す:

@routes.Assets.versioned("an_asset")


昔ながらの資産

これは基本的に、sbt-webの導入前に使用されていた方法です。

routes config:

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

ビューで呼び出す:

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