2016-04-17 8 views
0

私はスプレーを使用してHTMLページを提供しようとしているとのパラメータを持つ静的なコンテンツを表示します。 getFromResourcegetFromResourceDirectoryを使用するのはかなり簡単ですが、ページ上のいくつかのJavaScriptが何をすべきかを知るためにいくつかのクエリパラメータを渡す必要があります。それは可能ですか?すべての私の従来の試みは、物事はスプレー

val route = path("show-repo") { serveResourceWithParams(SHOW_REPO) } ~ getFromResourceDirectory("web") 
def serveWithParams(page: String, params: (String, String)*) = { 
    val url = page + (if (params.isEmpty) "" else "?") + params.map { case (k, v) => s"$k=$v" }.mkString("&") 
    getFromResource(url) 
} 

この種のことであったが、私は今、私はタイプArray[Byte]List[(String, String)]のメンバーと新しいケースクラスを作成し、それは

答えて

1

少しナイーブだった実現しています。

case class FileWithParams(file: Array[Byte], params: List[(String, String)]) 

ファイルが巨大ではありません知っている場合、あなたは

FileUtils.readAllBytes 

あなたは(あなたがスプレーを実行する必要がある)https://github.com/sirthias/parboiled/blob/master/parboiled-core/src/main/java/org/parboiled/common/FileUtils.java

を使用していると仮定すると一発でそれを読むことができます

次に、手動でファイルの内容を読み込み、ケースクラスを作成し、通常と同じようにマーシャリングします。

はもちろん、私の好ましい方法は、2つの非同期リクエストにこれを分割し、両方が完了するのを待つことになります。とにかくファイルのルートを待つことになります。

+0

こんにちは、お返事ありがとうございます。私はそれを得るのか分からない。あなたが普通にやっているように*マーシャルと言うとき、これは私のサービスの残りの部分が行うものなので、Jsonにシリアル化することについて話していますか?この場合、応答は有効なHTMLでなければなりません。私はまた別々の非同期要求であなたのポイントを取得しません。何のための別の要求?片側のファイルと相手側のファイルは何ですか?私の場合、パラメータはすぐに返すことができる単なるパラメータリストであり、何も処理する必要はありません。明確にするためのありがとうのIR事前:P – Dici

+0

私は基本的に、このような '' gitの-統計/ someHtmlFile.htmlレポ= [所有者を返すために、 'gitの-統計/ [所有者]/[レポ]/[操作]としてパスを解析しようとしていました? ]/[repo] 'これを行う代わりに、私は今すぐ直接クエリ文字列を使用して私のスプレーサービスを呼び出すと、パラメータがちょうど上に渡される、返されたページ上のJSはそれを読み取ることができます – Dici

関連する問題