有两个资产目录,一个是/ui/dist
,另一个是/public
。我试着写这样的路线:
GET /assets/*file controllers.Assets.at(path="/public", file)
GET /ui/*file controllers.Assets.at(path="/ui/dist", file)
但是编译时会抛出错误:
[error] Unspecified value parameter file.
[error] <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
有没有人有关于如何解决这个问题的想法......
答案 0 :(得分:3)
我发现关键是将另一个参数传递给routes.Assets.at
,以下内容来自playframework Asset document
GET /javascripts/*file Assets.at("public/javascripts", file)
GET /images/*file Assets.at("public/images", file)
然后,您需要在使用反向路由器时指定这两个参数:
<script src="@routes.Assets.at("public/javascripts", "jquery.js")"></script>
<image src="@routes.Assets.at("public/images", "logo.png")">
答案 1 :(得分:0)
尝试为每个路由器对象创建一个单独的路由器对象:
package controllers
object PublicAssets extends controllers.AssetsBuilder
object UiDistAssets extends controllers.AssetsBuilder
然后在你的路线中:
GET /assets/*file controllers.PublicAssets.at(path="/public", file)
GET /ui/*file controllers.UiDistAssets.at(path="/ui/dist", file)
我认为你的尝试中发生的事情是反向路由器为你的公共路由生成一个对象,然后另一个为ui路由同名的覆盖第一个路由(如果有人知道更准确,请纠正我。)解决方案应该是以不同的方式命名您的资产类别,因此生成的反向路由同样具有不同的名称(或者,可以将它们称为相同的东西,但将它们放在不同的包中。)