Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not find implicit value for parameter flash

I'm trying to port some code from Play Framework Java to Play Framework Scala but I'm having some issues with porting a tag.

The tag in question in the Java version checks the contents of the Flash scope and creates notifications to the user according to its values (error, success, etc).

I tried to create a Scala view (flag.scala.html):

@()(implicit flash:play.mvc.Scope.Flash)

@if(flash.get("error")) {
    <p style="color:#c00">
        @flash.get("error")
    </p>
}

Which I call from main.scala.html via:

@views.Application.html.flag()

The error I get is:

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

The call to the new tag is correct, as if I replace the content by some String that's shown in the browser.

I'm sure it's something stupid but I got stuck. Any suggestion?

like image 480
Pere Villega Avatar asked Jul 31 '11 20:07

Pere Villega


2 Answers

I don't know the details of Play, but this compile error is saying you should either:

  1. Pass an explicit instance of play.mvc.Scope.Flash in the call to flag(),

    views.Application.html.flag()(myFlash)
    

    or

  2. Make an implicit instance of Flash available in the scope where flag() is called. You could do this by importing the contents of some object (import some.path.FlashImplicits._) or by defining the implicit instance yourself,

    implicit val myFlash: play.mvc.Scope.Flash = ...
    ...
    views.Application.html.flag()
    

So the real question becomes: where do you want to get this Flash instance from?

like image 53
Kipton Barros Avatar answered Oct 18 '22 04:10

Kipton Barros


You should not create an implementation for "implicit flash : Flash" on your own. Just add a "implicit request" to your action and it should work.

More details is here at the end of the page: https://github.com/playframework/Play20/wiki/ScalaSessionFlash

like image 30
Ivan Suhinin Avatar answered Oct 18 '22 05:10

Ivan Suhinin