私はいくつかの苦労でそれを解決しました:)
方法は、すべてのアセットを処理するコントローラーを追加することです。コードは次のとおりです。
import com.twitter.finagle.http.Request
import com.twitter.finatra.http.Controller
class Resources extends Controller {
get("/assets/:*") { request: Request =>
response.ok.file("/public/" + request.params("*"))
}
}
参照 : http://twitter.github.io/finatra/user-guide/files/#file-server
また、以下のコードを使用してアセット パスを変更し、見栄えを良くしようとしましたが、失敗しました。したがって、「/ public /」をプレフィックスとしてファイルパスを設定する必要があります。より良い選択肢があれば、指摘してください、ありがとう。
System.setProperty("com.twitter.finatra.config.assetPath", "src/main/resources/public")
System.setProperty("local.doc.root", "src/main/resources/public")
UPDATE
System.setProperty が機能しません。@Christopherありがとう思い出させてください。
Flag("doc.root",...) または Flag("local.doc.root",...) を設定する方法は次のとおり
です。 1. モジュールを定義します。
object AssetsPathConfigModule extends TwitterModule {
val keyFileDoc = flag("local.doc.root", "./finatra/src/main/scala/com/myfinatra/public", "The key to use.") // file path
val keyDoc = flag("doc.root", "/com/myfinatra/public/", "class path") // class path
//@Singleton
@Provides
def providesThirdPartyFoo: FileResolver = {
new FileResolver("", keyDoc())
// or new FileResolver(keyFileDoc(),"")
}
}
2. モジュールを HttpServer のモジュール seq に追加します。
class HelloWorldServer extends HttpServer {
override val modules = Seq(
...,
AssetsPathConfigModule
)
...
}
リソースは次のように書くことができます
class Resources extends Controller { get("/assets/: ") { request: Request => response.ok.file(request.params(" ")) } }