播放框架2:视图中的隐含值

时间:2016-07-30 14:50:21

标签: scala view playframework-2.0 implicit

我需要在视图中创建url时隐式传递一些变量。

我在控制器中有动作:

class HomeController extends Controller{

  def index(implicit lang: Lang) = Action.async { implicit request => {
      Future[Result] {
        Ok(views.html.home.index(lang))
      }
    }

    ...
  }

以下是 index.scala.html

的摘录
@()(implicit lang: Lang)
@main("Home page") {
     <ul>
        <li><a href="@routes.HomeController.index()"><span>Home</span></a>
     ...
     </ul>
}

但是我在 @ routes.HomeController.index()编译错误,没有足够的方法参数

为什么会出错?如何在url创建中隐式传递变量?

1 个答案:

答案 0 :(得分:1)

试试这个:

class HomeController extends Controller {
 def index = Action.async { implicit request => {
      Future[Result] {
        Ok(views.html.home.index)
      }
    }
    ...
  }

不要明确地将lang param传递给函数。播放Controller包含从请求到lang的隐含转换,此lang将自动提供到您的视图中。