Skip to content
Server Plugin

JTE

必須の依存関係: io.ktor:ktor-server-jte

コード例: jte

ネイティブサーバー
KtorはKotlin/Nativeをサポートしており、追加のランタイムや仮想マシンなしでサーバーを実行できます。
のサポート: ✖️

Ktorでは、Jteプラグインをインストールすることで、JTEテンプレートをアプリケーション内のビューとして使用できます。

依存関係を追加する

Jte を使用するには、ビルドスクリプトに ktor-server-jte アーティファクトを含める必要があります。

Kotlin
Groovy
XML

.kte ファイルを処理するには、gg.jte:jte-kotlin アーティファクトをプロジェクトに追加する必要があります。

Jte をインストールする

アプリケーションに Jte プラグインをインストールするには、指定された

モジュール
モジュールを使用すると、ルートをグループ化してアプリケーションを構造化できます。
install 関数に渡します。以下のコードスニペットは、Jte をインストールする方法を示しています...

  • ... embeddedServer 関数呼び出し内。
  • ... 明示的に定義された module ( Application クラスの拡張関数) 内。
kotlin
kotlin

install ブロック内で、JTEテンプレートのロード方法を設定できます。

Jte を設定する

テンプレートのロードを設定する

JTEテンプレートをロードするには、次の手順を実行する必要があります。

  1. テンプレートコードを解決するために使用される CodeResolver を作成します。たとえば、特定のディレクトリからテンプレートをロードするように DirectoryCodeResolver を構成したり、アプリケーションリソースからテンプレートをロードするように ResourceCodeResolver を構成したりできます。
  2. templateEngine プロパティを使用してテンプレートエンジンを指定します。これは、作成された CodeResolver を使用して、テンプレートをネイティブのJava/Kotlinコードに変換します。

例えば、以下のコードスニペットは、Ktorが templates ディレクトリ内のJTEテンプレートを検索できるようにします。

kotlin
import gg.jte.TemplateEngine
import gg.jte.resolve.DirectoryCodeResolver
import io.ktor.server.application.*
import io.ktor.server.jte.*
import java.nio.file.Path

fun Application.module() {
    install(Jte) {
        val resolver = DirectoryCodeResolver(Path.of("templates"))
        templateEngine = TemplateEngine.create(resolver, gg.jte.ContentType.Html)
    }
}

応答でテンプレートを送信する

templates ディレクトリに index.kte テンプレートがあるとします。

html
@param id: Int
@param name: String
<html>
    <body>
        <h1>Hello, ${name}!</h1>
    </body>
</html>

指定されたルートでテンプレートを使用するには、JteContentcall.respond メソッドに次のように渡します。

kotlin
get("/index") {
    val params = mapOf("id" to 1, "name" to "John")
    call.respond(JteContent("index.kte", params))
}