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, это эквивалент resources в стандартных проектах sbt.

Для доступа к нему вы должны использовать Play.resourceAsStream(). Обратите внимание, что это дает вам java.io.InputStream, потому что ваш файл будет частью JAR, созданным activator dist.

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

Спасибо, я отредактировал ваш ответ, чтобы добавить информацию о Play.resource(). – DavidG

+0

У вас есть ссылка на некоторую документацию для управления ресурсами в каталоге 'conf'? Я не могу найти что-либо в Интернете, кроме этой маленькой маленькой строки, из анатомии игрового приложения «conf → Файлы конфигураций и других некомпилированных ресурсов (по пути к классам)». – DavidG

+0

http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Classpaths.html#keys –

 Смежные вопросы

  • Нет связанных вопросов^_^