Thymeleaf
Ratpack fournit des modules qui prennent en charge le moteur de modèles Thymeleaf.
build.gradle
dependencies {
compile "io.ratpack:ratpack-thymeleaf:${ratpack}"
}
Ajoutez un module.
Function<Registry, Registry> registry = ratpack.guice.Guice.registry( bindings -> {
bindings.module( new ThymeleafModule() );
} );
Par défaut, le module Thymeleaf reconnaît les fichiers * .html
sous $ {BaseDir} / thymeleaf
comme modèles. Par conséquent, il est nécessaire de définir BaseDir
.
ServerConfig.builder()
.development( true )
.findBaseDir( "public/.ratpack" )
Dans ce cas, public / thymeleaf
est considéré comme le répertoire des modèles.
Le module enregistre un Renderer
pour la classe ratpack.thymeleaf.Template
. Notez qu'il ne s'agit pas d'un moteur de rendu ** pour ʻIContext** de Thymeleaf.
Template peut être créé à partir de la méthode
Template.thymeleafTemplate ()`.
Action<Chain> handlers = chain -> {
chain.get( "/:name?", ctx -> {
String name = ctx.getPathTokens().get( "name" );
name = name.isEmpty() ? "world" : name;
ctx.render( Template.thymeleafTemplate( ImmutableMap.of( "name", name ), "template" ) );
} );
};
La carte du premier argument est la liaison du paramètre et le deuxième argument est le nom du modèle. Si «BaseDir» est «public / .ratpack», le fichier résolu réel sera «public / thymeleaf / template.html».
Le fichier modèle est exactement le même qu'un Thymeleaf ordinaire.
template.html
<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
<meta content="text/html; charset=UTF-8" />
</head>
<body>
<h1 th:text="'hello, ' + ${name}"></h1>
</body>
</html>
Comme vous pouvez le voir, utiliser Thymeleaf est très simple. L'implémentation du module elle-même est facile à créer, tant que vous avez une classe qui représente le modèle et une implémentation du moteur de rendu qui encapsule le moteur de modèle. Je pense qu'il serait facile de prendre en charge Velocity et d'autres moteurs de modèles avec un modèle similaire.
~~ Les modules fournis par le responsable Ratpack sont actuellement (février 2018) jusqu'à Thymeleaf 2.1.5. Il ne prend pas en charge la version 3 (je l'ai implémenté moi-même car il ne peut pas être aidé - Publicité). ~~ Officiellement pris en charge dans 1.6.0 et versions ultérieures. Veuillez utiliser cela.
Recommended Posts