JStachio
JStachio A type-safe Java Mustache templating engine.
Usage
1) Add the dependency:
Maven
Gradle
<dependency>
<groupId>io.jooby</groupId>
<artifactId>jooby-jstachio</artifactId>
<version>4.0.16</version>
</dependency>
Maven
Gradle
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>io.jstach</groupId>
<artifactId>jstachio-apt</artifactId>
<version>1.3.7</version>
</path>
<!-- other annotation processors like jooby -->
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
3) Create your models and templates
Create a model and annotate with @JStache.
Java
Kotlin
@JStache(path="index.mustache") // 1
public record IndexPage(String message){}
-
Path is a classpath resource usually in
src/main/resources
Create a mustache template in src/main/resources
src/main/resources/index.mustache
<p>Hello {{message}}!</p>
4) Install and use JStachio
Java
Kotlin
import io.jooby.jstachio.JStachioModule;
{
install(new JStachioModule()); // 1
get("/", ctx -> {
return new IndexPage("JStachio"); // 2
});
}
-
Install JStachio
-
Returns an annotated model
Options
JStachio uses a buffer to render a view. Default byte buffer size is 8k. To change the buffer size:
Java
Kotlin
import io.jooby.jstachio.JStachioModule;
{
install(new JStachioModule().bufferSize(1024));
}
JStachio has a hot reload mode that uses reflection via an extension. To add the extension the jar just needs to be in the classpath:
Maven
Gradle
<dependencies>
<dependency>
<groupId>io.jstach</groupId>
<artifactId>jstachio-jmustache</artifactId>
<version>1.3.7</version>
<scope>runtime</scope>
</dependency>
<dependencies>
To disable the extension for production either remove the dependency or
set the property JSTACHIO_JMUSTACHE_DISABLE to true.