如何在play框架2中将可选参数传递给scala模板

时间:2013-03-07 20:21:56

标签: scala playframework-2.0

playframework 2中的java控制器是否可以将可选参数传递给scala页面?

我有一个scala页面,我正在通过不同的操作进行渲染。只有在某种情况下,其中一个动作应该将参数传递给scala,我是否必须更改每个渲染调用?基本上我想打电话给template.scala.html 以两种方式

template.render(msg) //java

template.render()//java

在我的模板中我有这个:      @(msg:String =“xyz”)

目前我收到一个错误的电话,但没有消息说它没有 views.html.template中的render(java.lang.String)不能应用于()

2 个答案:

答案 0 :(得分:8)

作为解决方法,您可以将参数存储在Context.args地图中。它是Map<String,Object>,因此您可以存储当前请求所需的任何内容。

这是一种在模板中访问值的简单方法,无需将它们声明/传递为参数。

<强>控制器

public static Result someAction()
{
  ctx().args.put("msg", "Hello world!");

  return ok(myview.render());
}

<强>模板

@if(ctx.args.containsKey("msg")){
  <p>@ctx.args.get("msg")</p>
}

答案 1 :(得分:4)

在Play Framework 2 for Java中,控制器必须传递默认值或null。 在其他模板中,您可以保留可选参数。