0

我正在使用playframework從視圖中的文件中呈現Asciidoc文本。 由於在我看來使用了這些內容,因此我希望能夠將它放入app/views,以便在使用activator dist進行部署時將其打包。Playframework將放在視圖中呈現的文件

現在文件在運行後會丟失activator dist。由於內容以我的觀點呈現,因此我不想投入public/app/assets

我的觀點看起來versy簡單:

@(html: String)(implicit flash: Flash, lang: Lang) 

@main(Messages("application.name")){ 
    @Html(html) 
} 

而且我控制器發送字符串內容的觀點:

def about = Action { implicit request => 
    Ok(views.html.statics.normal(Static.render_file("app/views/adoc/about.adoc"))) 
} 

我應該在哪裏把這個文件?以及如何訪問它以外的路徑從根?

回答

1

您可以將「內部」文檔放在conf文件夾中,相當於標準sbt項目中的resources

要訪問它,你會使用Play.resourceAsStream()。請注意,這會給你一個java.io.InputStream,因爲你的文件將成爲由activator dist創建的JAR的一部分。

Play.resourceAsStream("adoc/about.adoc") map { adocStream => 
    Ok(views.html.statics.normal(Static.render_file(adocStream))) 
} getOrElse (InternalServerError) 
+0

謝謝,我編輯了你的答案,添加關於Play.resource()的信息。 – DavidG 2014-10-07 04:14:57

+0

您是否有鏈接到一些文檔來管理'conf'目錄中的資源?除了這個從遊戲應用程序'conf→配置文件和其他非編譯資源(在類路徑上)解剖學中的小小一行外,我無法在網上找到任何東西。 – DavidG 2014-10-07 04:22:43

+0

http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Classpaths.html#keys – 2014-10-07 07:58:33