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

nig*_*aph 4 scala playframework-2.0

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

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

template.render(msg) //java
Run Code Online (Sandbox Code Playgroud)

template.render()//java
Run Code Online (Sandbox Code Playgroud)

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

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

est*_*tic 8

作为解决方法,您可以将参数存储在Context.args地图中.这是一个Map<String,Object>让您可以存储方法和存储需要为当前请求任何东西.

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

调节器

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

  return ok(myview.render());
}
Run Code Online (Sandbox Code Playgroud)

模板

@if(ctx.args.containsKey("msg")){
  <p>@ctx.args.get("msg")</p>
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该在他们网站上的文档中,没有任何臃肿的例子直截了当。 (2认同)

gfj*_*fjr 5

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