我(最终)在 Play Framework 中设置了一个子项目,但无法访问样式表(对于子项目)。我有以下内容:
main-project
_build.sbt
_app
_controllers
_models
_views
_conf
_application.conf
_routes
_modules
_admin
_build.sbt
_app
_controllers
_admin
_Assets
_HomeController
_models
_views
_admin
_aMain.scala.html
_assets
_less
_admin.less
_conf
_admin.routes
_project
_build.properties
_plugins.sbt
GET / controllers.admin.HomeController.index
GET /assets/*file controllers.admin.Assets.at(path="/public/lib/admin", file)
@(title: String)
<!DOCTYPE html>
<html lang="en">
<head>
<title>@title</title>
<link rel="stylesheet" media="screen" href="@admin.routes.Assets.at("less/admin.less")">
<link rel="shortcut icon" type="image/png" href="@admin.routes.Assets.at("images/favicon.png")">
<script src="@admin.routes.Assets.at("javascripts/hello.js")" type="text/javascript"></script>
</head>
<body>
@* And here's where we render the `Html` object containing
* the page content. *@
<div class="blue-italic">@title</div>
</body>
</html>
因此页面加载成功但不加载样式表。我甚至将路径和文件名设置为唯一,以避免任何潜在的冲突。谁能看到这里出了什么问题?感谢
答案 0 :(得分:0)
你应该尝试这个(只使用唯一的Assets控制器):
GET /assets/*file controllers.Assets.at(path="/public/lib/admin", file)
来自scala play文档:
注意:资源是从唯一的类加载器提供的,因此资源路径必须与项目类路径根相对。 子项目资源在target / web / public / main / lib / {module-name}中生成,因此在使用play.api.Application#resources(uri)方法时可以从/ public / lib / {module-name}访问资源,这是Assets.at方法的作用。