我想要一个主页,其中包含指向我应用其他部分的链接列表。所以,我没有像<a href="@controllers.routes.SomeModel.show(someModel.ean)">
那样使用harcoded hrefs,而是想创建一个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))
所以我该怎么做呢?
答案 0 :(得分: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