Buwaneka Sumanasekara
Buwaneka Sumanasekara

Reputation: 663

How to access session attribute in Play frame work using scala?

I tried to access session attribute using scala and play frame work. but could n`t get success. here is the code

User.scala

 def login = Action { implicit request =>
        val newLoginForm = loginForm.bindFromRequest()

            newLoginForm.fold(

            hasErrors = { form =>
               Redirect(routes.Users.loginUser()).
                flashing(Flash(form.data) + 
                    ("error" -> "Fill user name and Password"))
                },
            success = { implicit newUser =>
                if(User.findUserBydb(newUser.uname,newUser.pass)){

                    Ok(views.html.pages.page_one()).withSession("mysession"-> "[email protected]")

                }else{
                   Redirect(routes.Users.loginUser()).
                    flashing("error" ->"Invalid Login")
                }    
            }
            )
    }

view ---- > page_one.scala.html

    @import play.api.Play.current
@import play.api.i18n.Messages.Implicits._
@import play.api.mvc.Session
@import play.api.mvc.Request


@index("Hi"){
    <h2>
      Welcome  @request.session.get("mysession")
    </h2>

}

Upvotes: 3

Views: 2887

Answers (1)

Carlos Vilchez
Carlos Vilchez

Reputation: 2804

If you need the session on the view, you will need to add the implicit request (implicit request: play.api.mvc.RequestHeader). So your code will be something like

    @import play.api.Play.current
    @import play.api.i18n.Messages.Implicits._
    @import play.api.mvc.Session
    @import play.api.mvc.Request
    @()(implicit request: play.api.mvc.RequestHeader)

    @index("Hi"){
       <h2>
         Welcome  @request.session.get("mysession")
       </h2>

    }

Upvotes: 4

Related Questions