Templates 如何在Play framework 2.0模板中插入控制器操作的链接
如果我有一个actionTemplates 如何在Play framework 2.0模板中插入控制器操作的链接,templates,hyperlink,playframework-2.0,Templates,Hyperlink,Playframework 2.0,如果我有一个actionApplication.show(tag:String),并且还有一个相应的路由条目,那么我如何在不手动创建url的情况下将此操作的链接插入模板 我想做一些类似于magiclink(Application.show(“tag”)的事情,就像{routes.Application.show(“tag”)}语法一样简单: <a href='@routes.Application.show("some")'>My link with some string</
Application.show(tag:String)
,并且还有一个相应的路由条目,那么我如何在不手动创建url的情况下将此操作的链接插入模板
我想做一些类似于magiclink(Application.show(“tag”)的事情,就像
{routes.Application.show(“tag”)}
语法一样简单:
<a href='@routes.Application.show("some")'>My link with some string</a>
将
路由
文件中的URL放入html的格式如下:
@routes.NameOfYourClass.nameOfyourMethod()
因此,如果在路由
文件中有:
GET /products controllers.Products.index()
您的产品
类如下所示:
<a href="@routes.Products.index()">Products</a>
公共类产品扩展控制器{
公开结果索引(){
返回ok(views.html.index.render());
}
}
您的
此外:如果您的方法可以接受参数,那么您当然可以像这样在方法的括号中传递它们:索引(“Hi”)
我希望这个答案更清晰易懂。公认的答案是正确的,但它不包括控制器位于子包中的情况,即:
controllers.applications.myfavoriteApplication.show()
因为我很难找到答案,我将把它贴在这里
要将非作用域链接放入模板中,正确的模式是@controllers.{sub packages if any}.routes.{your class}.{your method}()
因此,在本例中,它将是@controllers.applications.routes.MyFavoriteApplication.show()
如果您使用推荐的播放模式使用@Inject
创建单例控制器对象,并且如果您认为正确的答案是@controllers.applications.myFavoriteApplication.show()
,则会出现如下错误:
<a href="@routes.Products.index()">Products</a>
对象MyFavoriteApplication不是controllers.applications的成员。注意:MyFavoriteApplication类存在,但它没有伴生对象。
考虑到您已经提供了
@Inject()
@Singleton
注释,这看起来确实是一个非常奇怪的错误。这可能会让你怀疑你是否正确地构建了项目。确定真正的原因可能会花费您大量的血汗和财富。如果我的控制器在子包中会怎么样?假设它位于com.mycompany.myproduct.controllers.LoginController.index()