2016-10-10 16 views
0

私はPlay Frameworkを使い始めていますが、私がしたいことを教えるためのまともなガイドはありません。 メモリとディスクの統計情報を取得するサービスがあります。このサービスを自動的にロード/コールし、コントローラからビューに値を渡したいと思います。Play Frameworkで自動的にデータビューを更新するには?

誰でも私にチュートリアルやヒントを教えていただけますか?

答えて

1

多くのレシピがあります。あなたが自動的に言うとき、私はあなたがユーザーの介入なしで意味すると仮定しています。したがって、あなたのウェブページはおそらくhttp meta refresh経由でjavascriptタイマーや古い慣習を使って、そのアップデートを開始する方法を必要とします。 javascriptタイマーの場合(たぶんsetTimeOut or setInterval)、コントローラAPIへのajax呼び出しを使用して、JSONのデータを返し、ページに挿入します。

on timer event -> 
    ajax.GET '/api/monitor' (data) -> 
    if data.success 
     update $("#results") with data.statistics 

A非常に単純なビューだけかもしれません。この中

def apiMonitor = Action { 
    Ok(Json.obj(
    "success" -> true, 
    "statistics" -> models.statisticsMethod() 
)) 
} 

:の行(再び疑似コード)に沿って話をする

@() 
@main() { 
    <script src="your javascript.js" type="text/javascript">></script> 
    <div id="results"> 
    </div> 
} 

及び制御方法、あなたのプレイビューはシンプルなコンテナになり、フロントエンドの作業はテンプレートで実際には行われません。リフレッシュ方法を使用して

、お使いのコントローラがビューを毎回返すことができ、コントローラScalaの擬似コード:

def apiMonitor = Action { 
    Ok(view.html.monitor(models.statisticsMethod() 
} 

とフォーマットを視野:

@(statistics:List[Statistic]) 
@main() { <!-- where main generates something with the meta refresh in --> 
    <table> 
    <tbody> 
     @statistics.map { statistic => 
     <tr><td>@detail.attribute1</td><td><@detail.attribute2</td></tr> 
     } 
    </tbody> 
    </table> 
} 

ように設計する方法はたくさんあります。もの。上記は不完全ですが、あなたが必要とするいくつかのポイントをカバーしています。作業に非常に便利な場所は、作業するコードがあるLightBend Websiteのテンプレートの1つです。

関連する問題