【问题标题】:How to open a .html page that is static without setting up routes in Play framework?如何在 Play 框架中不设置路由的情况下打开静态的 .html 页面?
【发布时间】:2015-11-03 12:06:08
【问题描述】:

我将 main.scala.html 放在资产中。而且我想在不设置路由的情况下打开它,因为它是静态的。

在controllers.Application中,我试过这样

public static Result index() {
    //return ok(index.render("Your new application is ready."));
    return redirect("assets/main/main.scala.html");

}

在路线页面中,我尝试过这样

GET / controllers.Application.index

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

如何修复我的代码以打开http://localhost:9000/assets/main/main.scala.html

或者我应该尝试将 html 文件放在公共文件夹中吗?

【问题讨论】:

  • 我不会只是找到一种不同的方式来为用户提供静态内容。我建议通过在控制器中呈现模板和文件来坚持提供内容的通常方式,并且仍然为其添加路由。它更简单、更优雅。
  • 感谢您的回复。我也喜欢通常的方式,但是想要培训我的老板让我将html文件放入资产中,因为我已经按照通常的方式制作了一个;_;

标签: java scala playframework


【解决方案1】:

1) 如果它是静态的,则不应将其命名为 main.scala.html,而应仅命名为 main.html。 (不是强制性的,只是为了清楚什么是什么)

2) 正如评论中所写,您应该通过 routes.conf 和 Controller 维护路由。但是您可以在不使用模板的情况下将文件作为资源加载。

GET         /main               controllers.Application.publicMain

public static Result publicMain{
 return ok(Application.class.getResourceAsStream("/assets/main/main.html")).as("text/html");
    }

【讨论】:

    【解决方案2】:

    虽然不推荐,但如果你真的想这样做,你可以按照@mst的建议去做,或者读取文件并将其解析为html。 例如:

    val html =
          """
            <html>
            <body>
             <p> Hello </p>
            </body>
            </html>
          """
        Ok(scala.xml.Unparsed(html)).as("text/html")
      }
    

    【讨论】:

      猜你喜欢
      • 2016-01-19
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 2021-03-03
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多