4

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

我有一个 scala 页面,我正在从不同的操作中呈现。仅在某些情况下,这些操作之一应该将参数传递给 scala,我是否必须更改每个渲染调用?基本上我想用两种方式调用 template.scala.html

template.render(msg) //java

template.render()//java

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

目前我收到一个调用错误,没有消息表明它不会在views.html.template中呈现(java.lang.String)不能应用于()

4

2 回答 2

9

作为一种解决方法,您可以将参数存储在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>
}
于 2013-09-03T19:43:05.090 回答
5

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

于 2013-09-03T08:58:58.223 回答