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)不能应用于()
答案 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。 在其他模板中,您可以保留可选参数。