2016-07-28 47 views
0

我使用的是Play 2.5,並且需要將所有相關的靜態HTML模板數據存儲在數據庫中的一列中,然後我們可以調用並傳遞相關對象。播放2.5 - 在數據庫中存儲模板

這很困難,因爲Play似乎要求模板在運行之前作爲包含在類路徑中的靜態文件存在。

例如,假設我有一個index.scala.html文件看起來像這樣:

<html> 
Hello @name! 
</html> 

我要存儲在一個變量的模板(即字符串模板),我可以通過對象成這樣:

String template = GreetingDTO.getTemplate(); 

Content html = template.render(User.getName()); 

這基本上是我所做的關於模板在這一點上做的。我需要將一些傳入的對象格式化爲電子郵件通知的用戶可編輯HTML佈局。

這可能沒有黑客與Play的classpath結構?我甚至從哪裏開始呢?我可以通過使用不同於Twirl的模板引擎來實現這一點。我發現的唯一例子是this幾年前的Freemarker舊帖子,所以希望可能會有更新的東西。

回答

0

您將無法使用默認模板引擎Twirl,因爲它被編譯爲scala代碼,然後編譯爲字節代碼,並且所有代碼都在編譯/編譯時發生。從the docs

遵循簡單的命名約定,模板被編譯爲標準的Scala函數。如果創建了views/Application/index.scala.html模板文件,它將生成一個views.html.Application.index類,該類具有apply()方法。

當然,您可以使用change the template engine,並且可以使用另一個更適合您需求的模板引擎(動態加載和解析模板)。最後,看看modules directory