我有一个Play 2视图,它嵌入在主内部div中,如下所示
@ mainboard.applicationtraffic.render()
上面的视图在顶部有一个定义为@(隐式请求:RequestHeader)的参数 applicationtraffic。因为我想使用websocket我定义了参数
问题:当我尝试渲染1.它请求RequestHeader作为参数
任何人都可以给我一些示例代码如何将请求标题传递给局部视图
渲染方法
提前谢谢
applicationtraffic.scala.html
@(implicit request: RequestHeader)
<script type="text/javascript">
var socket = new WebSocket("@routes.Application.applicationTrafficWS().webSocketURL()")
socket.onopen = function(event)
{
socket.send('I am the client and I\'m listening!');
socket.onmessage = function(event)
{
var datapoint = jQuery.parseJSON( event.data );
$("#data" ).html(datapoint);
};
socket.onclose = function(event)
{
console.log('Client notified socket has closed',event);
};
};
</script>
<div id="data">
</div>
Index.scala.html
<div class="span4">
<div class="widget" >
<div class="widget-head">
<h4 class="heading glyphicons cardio"><i></i>Application Traffic</h4>
</div>
<div class="widget-body">
@mainboard.applicationtraffic.render(Context.current.get()._requestHeader())
</div>
</div>
</div>
答案 0 :(得分:0)
以下是将request
作为隐式参数传递时如何获得所需内容的最小示例。首先,您需要在index.html
:
<强> index.scala.html 强>
@()(implicit request: play.api.mvc.RequestHeader)
<div class="span4">
<div class="widget" >
<div class="widget-head">
<h4 class="heading glyphicons cardio"><i></i>Application Traffic</h4>
/div>
<div class="widget-body">
@applicationtraffic()
/div>
</div>
</div>
请注意空参数列表以及如何调用局部视图(由于您将局部视图命名为applicationtraffic.scala.html
,因此我已删除此示例中的主板前缀)。因为您希望将请求作为隐式传递,并且我们没有显式参数,所以您需要再次添加空括号:
<强> applicationtraffic.scala.html 强>
@()(implicit request: RequestHeader)
<script type="text/javascript">...</script>
<div>...</div>
最后,您的控制器方法应将request
参数声明为implicit
:
def index = Action { implicit request =>
Ok(views.html.index())
}