Per*_*ega 14 scala playframework
我正在尝试将一些代码从Play Framework Java移植到Play Framework Scala,但是我在移植标签时遇到了一些问题.
Java版本中的标记检查Flash作用域的内容,并根据其值(错误,成功等)向用户创建通知.
我试图创建一个Scala视图(flag.scala.html):
@()(implicit flash:play.mvc.Scope.Flash)
@if(flash.get("error")) {
<p style="color:#c00">
@flash.get("error")
</p>
}
Run Code Online (Sandbox Code Playgroud)
我来自main.scala.htmlvia:
@views.Application.html.flag()
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
无法编译文件{module:.}/tmp/generated/views.html.main.scala.引发的错误是:找不到参数flash的隐含值:play.mvc.Scope.Flash
对新标记的调用是正确的,就像我用浏览器中显示的某些String替换内容一样.
我确定这是愚蠢的,但我卡住了.有什么建议吗?
我不知道Play的细节,但是这个编译错误说你应该:
play.mvc.Scope.Flash在调用中传递显式实例flag(),
views.Application.html.flag()(myFlash)
Run Code Online (Sandbox Code Playgroud)
要么
Flash在flag()调用的作用域中创建一个可用的隐式实例.您可以通过导入某个object(import some.path.FlashImplicits._)的内容或自己定义隐式实例来完成此操作,
implicit val myFlash: play.mvc.Scope.Flash = ...
...
views.Application.html.flag()
Run Code Online (Sandbox Code Playgroud)所以真正的问题就变成了:你想Flash从哪里获得这个实例?