如何发挥作用! scala模板没有通过控制器路由?

时间:2014-09-02 19:22:41

标签: scala playframework-2.0

我想要像

这样的东西

路线

GET   /endpoint   pathToTemplate.templateName.scala.html

为了避免仅为提供此模板而需要创建控制器。

我需要一个模板,因为我使用导入的scala库提供值,所以这不能只是静态的html

@import tool.values._

<p>
  @Tool.getValue()
<p>

1 个答案:

答案 0 :(得分:3)

无法实现您想要的解决方案,但您可以使用一个控制器和动态URL部件映射进行解决。

首先创建一个控制器,为任何提供的路径提供视图。路径定义必须放在代码中,例如使用简单的哈希映射而不是路由文件。

object GlobalController extends Controller {

  private val getRouterMap = Map(
    "view1" -> views.html.view1(),
    "view2" -> views.html.view2(),
    "sub/view3" -> views.html.view3()
  )

  def route(path: String) = Action { implicit request =>
    Ok(getRouterMap.getOrElse(path, views.html.notFound()))
  }

}

其次,在路径文件的末尾,为已创建的操作定义映射,如下所示。

GET         /*path               controllers.GlobalController.route(path)

将它作为最后一行非常重要。否则它将影响下面定义的所有其他映射。

<强>提示

无论如何,如果我有你,我会重新考虑你的设计。单身对象不容易测试。他们迟早会让你的生活变得非常痛苦。