Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 如何在Play framework 2.0模板中插入控制器操作的链接_Templates_Hyperlink_Playframework 2.0 - Fatal编程技术网

Templates 如何在Play framework 2.0模板中插入控制器操作的链接

Templates 如何在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</

如果我有一个action
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()