我开始使用Play Framework,但它没有任何体面的指导来教我想做什么。 我有一个获取内存和磁盘统计信息的服务,我想自动加载/调用此服务,并将值从控制器传递给视图。
任何人都可以提供任何教程或提示吗?
答案 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上有一个可以使用的工作代码的模板之一。