有我的路线。第二个是评论。
GET /assets/*file controllers.Assets.at(path="/public", file)
#GET /partials/*file controllers.Assets.at(path="/public/partials", file)
(我想要的是:使我位于"/public/partials"
文件夹中的html文件可以通过网络获取,与assets
的方式相同
只要我取消注释第二行 - 由于此行(来自我的index.scala.html
)就会出错:
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
错误就像这里:
方法的参数不够:(路径:字符串,文件: 字符串)play.api.mvc.Call。未指定的值参数文件。
问:出了什么问题?
更新
另一个词:我希望通过提供该映射来缩短我的网址。否则我必须使用此网址:'assets/partials/welcome.html'
而不是那个(我想使用):'partials/welcome.html'
。
还有一个映射可以缩短我的网址。
当我需要从JS部分到达那些时,它就像有两个应用程序在一个(1.play one,2.js one),有路由,两个根。对于JS,我假设我已经在/ public(或在资产中) - 这是js应用程序的根目录。
我想知道为什么它不起作用。
答案 0 :(得分:10)
来自play docs:
公共资产的反向路由
对于路径文件中映射的任何控制器,在controllers.routes.Assets
中创建了一个反向控制器。您可以使用它来反转获取公共资源所需的URL。例如,从模板:
<script src="@routes.Assets.at("javascripts/jquery.js")"></script>
这将产生以下结果:
<script src="/assets/javascripts/jquery.js"></script>
请注意,当我们撤消路线时,我们不会指定第一个folder
参数。这是因为我们的routes文件为Assets.at操作定义了一个映射,其中folder参数是固定的。所以它不需要明确指定。
但是,如果为Assets.at操作定义了两个映射,如下所示:
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")">
public / partials目录中的任何静态html都可以在/assets/partials/someHtml.html上公开获取。严格来说,您不需要/ partials / *文件路径