如何在Play Framework中自动更新数据视图?

时间:2016-10-10 16:52:04

标签: java playframework

我开始使用Play Framework,但它没有任何体面的指导来教我想做什么。 我有一个获取内存和磁盘统计信息的服务,我想自动加载/调用此服务,并将值从控制器传递给视图。

任何人都可以提供任何教程或提示吗?

1 个答案:

答案 0 :(得分:1)

这顿饭的食谱太多了!当你自动说出来时,我假设你的意思是没有用户互动。因此,您的网页需要一种方法来启动该更新,可能是通过javascript计时器或通过http meta refresh更老式地启动。对于javascript计时器(可能是setTimeOut or setInterval,每次它都会触发"你会使用ajax调用你的控制器API,它会返回JSON中的数据然后插入你的页面。伪javascript代码:

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

一个非常简单的视图可能只有:

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

和一个控制器方法,沿着线路(再次伪代码):

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

在这种情况下,您的播放视图将是一个简单的容器,前端工作并非在模板中完成。

使用刷新方法,您的控制器每次都可以返回一个视图,控制器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上有一个可以使用的工作代码的模板之一。