Routes 播放框架。路线。错误:";没有足够的参数用于…”处的方法;

Routes 播放框架。路线。错误:";没有足够的参数用于…”处的方法;,routes,playframework-2.1,Routes,Playframework 2.1,这是我的路线。第二个是评论 GET /assets/*file controllers.Assets.at(path="/public", file) #GET /partials/*file controllers.Assets.at(path="/public/partials", file) (我想要的是:使位于“/public/partials”文件夹中的html文件可以通过web访问,方法与为资产制作的html文件相同) 一旦我取消

这是我的路线。第二个是评论

GET         /assets/*file       controllers.Assets.at(path="/public", file)

#GET         /partials/*file    controllers.Assets.at(path="/public/partials", file)
我想要的是:使位于
“/public/partials”
文件夹中的html文件可以通过web访问,方法与为
资产制作的html文件相同

一旦我取消第2行的注释,它将由于这一行而出现错误(从我的
index.scala.html
):


错误如下所示:

方法的参数不足:(路径:字符串,文件: 字符串)play.api.mvc.Call。未指定的值参数文件

Q:怎么了

更新:

另一句话:我想通过提供映射来缩短我的url。否则,我必须使用这个url:
'assets/partials/welcome.html'
,而不是我想要使用的那个url:
'partials/welcome.html'

只要再映射一次,我的URL就会变短

当我需要从JS部分访问这些应用程序时,这是有意义的,就像在一个应用程序中有两个应用程序(1.play one,2.JS one),还有路由,两个根。对于JSONE,我假设我已经在/public(或在资产中)-这是JS应用程序的根目录

我想知道为什么它不起作用。

来自:

公共资产反向路由

对于routes文件中映射的任何控制器,将在
controllers.routes.Assets
中创建反向控制器。您可以使用它来反转获取公共资源所需的URL。例如,从模板:

<script src="@routes.Assets.at("javascripts/jquery.js")"></script>
然后,在使用反向路由器时,需要指定两个参数:

<script src="@routes.Assets.at("/public/javascripts", "jquery.js")"></script>
<image src="@routes.Assets.at("/public/images", "logo.png")">


public/partials目录中的任何静态html都可以在/assets/partials/someHtml.html上公开获得。所以严格地说,您不需要/partials/*文件路径,我知道,但是我想通过提供映射来缩短我的url。否则,我必须使用这个url:“assets/partials/welcome.html”而不是“partials/welcome.html”。只要再映射一次,我的URL就会变短。当我需要从JS部分访问这些应用程序时,这是有意义的,就像在一个应用程序中有两个应用程序(1.play one,2.JS one),还有路由,两个根。对于JSONE,我假设我已经在/public(或在资产中)-这是JS应用程序的根目录。我想知道为什么它不起作用。也许这对您来说已经很清楚了,但是如果您为Assets.at action定义了第二个映射,那么您需要在使用反向路由器时指定path参数。这是因为路径现在不明确。因此,你不能使用@routes.Assets.at(“stylesheets/main.css”),而必须使用@routes.Assets.at(“/public”,“stylesheets/main.css”)是的。我懂了。我最好使用一个路由定义,在url中多输入一个单词,而不是在每个资源url中多输入一个参数。这个解决方案给了我:
[MatchError:(public/css,bootstrap.min.css)(属于scala.Tuple2类)]
我相信我在这方面遇到了一个播放错误/怪癖(2.4.2和2.5.0)。如果conf文件夹中有两个路由文件,则两个文件中的资源路由的多样性应相同。这意味着,如果一个文件中有多个资源路由,那么另一个文件也应该有多个资源路由。否则,play会在html模板中使用反向路由时产生误导性错误。我在主应用程序
routes
文件中有两条资产路由,在
test.routes
中有一条。然后,我收到一个参数版本的
@routes.Assets.at()
的“参数不足”错误,另一个参数版本的“参数过多”错误。
<script src="/assets/javascripts/jquery.js"></script>
GET  /javascripts/*file        controllers.Assets.at(path="/public/javascripts", file)
GET  /images/*file             controllers.Assets.at(path="/public/images", file)
<script src="@routes.Assets.at("/public/javascripts", "jquery.js")"></script>
<image src="@routes.Assets.at("/public/images", "logo.png")">