无法访问子项目中的样式表

时间:2017-10-30 19:13:33

标签: css scala playframework routing subproject

我(最终)在 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

admin.routes

   GET /                  controllers.admin.HomeController.index

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

aMain.scala.html

@(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>

因此页面加载成功但不加载样式表。我甚至将路径和文件名设置为唯一,以避免任何潜在的冲突。谁能看到这里出了什么问题?感谢

1 个答案:

答案 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方法的作用。