私は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
だから...どんな助けも感謝します.
さて、ソリューションを要約すると、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")