1

我的应用程序基于几个示例应用程序,但我收到错误:找不到参数 flash 的隐式值:play.api.mvc.Flash

(我希望 Flash 满足模板 @(title: String, user: User, systems: List[System], currentOrderBy: Int, currentFilter: String)(implicit flash: play.api.mvc.Flash) 签名所以我可以传递先前的结果)

这是我给出问题的代码:

def index = IsAuthenticated { username => _ => 
    User.findByEmail(username).map { user =>
      Ok(
        html.systems.systems("Ken2::Systems",
          user,
          System.all,
          1, "%"
        )
      )
    }.getOrElse(Forbidden)
  }

在文档中它说:如果出现错误“找不到参数 flash 的隐式值:play.api.mvc.Flash”,那么这是因为您的操作没有导入请求对象。添加一个“隐式请求=>”,如下所示:

def index() = Action {   
  implicit request =>
    Ok(views.html.Application.index())
}

但是在我的代码中我会在哪里坚持这个隐式请求?(我的代码格式来自示例应用程序之一)

谢谢你

4

1 回答 1

4

您已使用通配符掩盖了隐式请求。_据我了解 Scala,当您使用通配符时,这意味着无论它是什么都忽略它。这意味着,您不能在代码中进一步使用它。但是闪存范围需要访问请求,这就是它不起作用的原因。

这应该工作:

def index = IsAuthenticated { username => implicit request => 
    ...
}
于 2013-09-01T18:40:16.110 回答