JTE
必須の依存関係: io.ktor:ktor-server-jte
コード例: jte
Ktorでは、Jteプラグインをインストールすることで、アプリケーション内のビューとしてJTEテンプレートを使用できます。
依存関係の追加
Jteを使用するには、ビルドスクリプトにktor-server-jteアーティファクトを含める必要があります。
.kteファイルを処理するには、プロジェクトにgg.jte:jte-kotlinアーティファクトを追加します。
現在の
jte-kotlinコンパイラプラグインはKotlin 2.3.xと互換性がありません。 Ktor 3.4.0はKotlin 2.3ツールチェーンを使用しているため、jte-kotlinプラグインがKotlin 2.3のサポートを追加するまで、Ktor JTEプラグインは使用できません。JTEに依存している場合は、
jte-kotlinがKotlin 2.3用に更新されるまで、Kotlin 2.2.xと互換性のあるKtorバージョンを使用してください。
Jteのインストール
Jteプラグインをアプリケーションにインストールするには、指定された
install関数に渡します。 以下のコードスニペットは、Jteをインストールする方法を示しています... - ...
embeddedServer関数の呼び出し内。 - ...
Applicationクラスの拡張関数である、明示的に定義されたmodule内。
installブロック内では、JTEテンプレートをロードする方法を設定できます。
Jteの設定
テンプレート読み込みの設定
JTEテンプレートをロードするには、以下を行う必要があります:
- テンプレートコードを解決するために使用される
CodeResolverを作成します。例えば、特定のディレクトリからテンプレートをロードするようにDirectoryCodeResolverを設定したり、アプリケーションリソースからテンプレートをロードするようにResourceCodeResolverを設定したりできます。 templateEngineプロパティを使用してテンプレートエンジンを指定します。これは、作成されたCodeResolverを使用してテンプレートをネイティブのJava/Kotlinコードに変換します。
例えば、以下のコードスニペットにより、Ktorはtemplatesディレクトリ内でJTEテンプレートを探すようになります。
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テンプレートがあるとします。
@param id: Int
@param name: String
<html>
<body>
<h1>Hello, ${name}!</h1>
</body>
</html>指定されたルートに対してテンプレートを使用するには、次のようにJteContentをcall.respondメソッドに渡します。
get("/index") {
val params = mapOf("id" to 1, "name" to "John")
call.respond(JteContent("index.kte", params))
}