[Day 9] 談怎麼在 Ktor 內使用 FreeMarker template

如果你不喜歡 Ktor 裡面提供的 HTML DSL,那也沒關係,Ktor 裡還可以使用另一種方式產生畫面:FreeMarker

FreeMarker logo

FreeMarker 是一個基於 Java 的 template engine,可以透過 .ftl 檔案的模板,來生成 HTML 的原始碼。

和 HTML DSL 時一樣,我們在專案裡面,可以看到使用 FreeMarker template 的範例:

get("/html-freemarker") {
    call.respond(FreeMarkerContent(
        "index.ftl", 
        mapOf("data" to IndexData(listOf(1, 2, 3))), "")
    )
}

index.ftl 的位置在 resources/templates/index.ftl,內容如下:

<#-- @ftlvariable name="data" type="com.example.IndexData" -->
<html>
    <body>
        <ul>
        <#list data.items as item>
            <li>${item}</li>
        </#list>
        </ul>
    </body>
</html>

其中 <#list data.items as item> 這個語法,是 FreeMarker template 裡面的迴圈語法。

如果我們連線到 http://127.0.0.1:8080/html-freemarker ,然後檢視原始碼的話,可以看到產生的結構如下:

<html>
    <body>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    </body>
</html>

以上就是另一個生成 HTML 畫面的方式。