我正在尝试将一些代码从 Play Framework Java 移植到 Play Framework Scala,但我在移植标签时遇到了一些问题。
Java 版本中的相关标记检查 Flash 范围的内容,并根据其值(错误、成功等)向用户创建通知。
我试图创建一个 Scala View ( flag.scala.html
):
@()(implicit flash:play.mvc.Scope.Flash)
@if(flash.get("error")) {
<p style="color:#c00">
@flash.get("error")
</p>
}
我从
main.scala.html
打来的电话通过:@views.Application.html.flag()
我得到的错误是:
The file {module:.}/tmp/generated/views.html.main.scala could not be compiled. Error raised is : could not find implicit value for parameter flash: play.mvc.Scope.Flash
对新标签的调用是正确的,就好像我用浏览器中显示的某个字符串替换了内容。
我确定这是愚蠢的事情,但我被卡住了。有什么建议吗?
最佳答案
我不知道 Play 的细节,但是这个编译错误是说你应该:
play.mvc.Scope.Flash
的显式实例在调用 flag()
,views.Application.html.flag()(myFlash)
或
Flash
的隐式实例在以下范围内可用 flag()
叫做。您可以通过导入某个对象的内容( import some.path.FlashImplicits._
)或自己定义隐式实例来做到这一点,implicit val myFlash: play.mvc.Scope.Flash = ...
...
views.Application.html.flag()
所以真正的问题变成了:你想从哪里得到这个
Flash
实例来自?
关于scala - 找不到参数 flash 的隐式值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6892064/