0

我想要一个主页,其中包含指向我的应用程序其他部分的链接列表。<a href="@controllers.routes.SomeModel.show(someModel.ean)">因此,与其像我想的那样使用硬编码的 href,不如 创建一个 Link 对象,它包含一个链接列表,我可以通过控制器将其传递到该页面,然后呈现每个链接。但我不清楚如何实际引用该链接。

 case class Link(name: String, route: String)

    object Link {
      val links = Set(Link("SomeModels", controllers.SomeModels.list.toString()),
        Link("Products", controllers.Products.list.toString()))

      def allLinks = links.toList
    }

我想像这样使用它:

@(links: List[Link])(implicit flash: Flash, lang: Lang)
@main("welcome to my awesome play app") {
<dl class="models">
    @for(link <- links) {
    <dt>
        <a href=@link.route>
            @link.name
        </a>
    </dt>
    }
</dl>
}

但它显然不起作用,因为那些实际上链接到http://localhost:9000/Action(parser=BodyParser(anyContent))所以我该怎么做呢?

4

1 回答 1

1

您需要在“控制器”和控制器名称之间放置“.routes”,并使用方法“url”:

case class Link(name: String, route: String)

object Link {
  val links = List(Link("SomeModels", controllers.routes.SomeModels.list.url),
    Link("Products", controllers.routes.Products.list.url))

  def allLinks = links.toList
}

我为 play 2.0.4 的工作代码做了一个要点:https ://gist.github.com/4275931

于 2012-12-13T11:47:06.787 回答