Skip to content

Instantly share code, notes, and snippets.

@seratch
Created June 28, 2012 09:19
Show Gist options
  • Save seratch/3010147 to your computer and use it in GitHub Desktop.
Save seratch/3010147 to your computer and use it in GitHub Desktop.
ThymeleafSupport for Scalatra
import org.scalatra.ScalatraKernel
import org.thymeleaf.templateresolver._
import org.thymeleaf.TemplateEngine
import org.thymeleaf.context.WebContext
trait ThymeleafSupport {
self: ScalatraKernel =>
lazy val thymeleafResolver: TemplateResolver = {
val resolver = new ServletContextTemplateResolver
resolver.setTemplateMode("LEGACYHTML5")
resolver.setPrefix("/WEB-INF/layouts/")
resolver.setSuffix(".html")
resolver.setCacheTTLMs(3600000L)
resolver
}
lazy val thymeleafTemplateEngine: TemplateEngine = {
val engine = new TemplateEngine
engine.setTemplateResolver(thymeleafResolver)
engine
}
def render(templateName: String, attributes: (String, Any)*): String = {
contentType = "text/html; charset=utf-8"
val context = new WebContext(request, servletContext)
attributes.foreach {
case (key, value: Map[_,_]) => context.setVariable(key, value.asJava)
case (key, value: Iterable[_]) => context.setVariable(key, value.asJava)
case (key, value) => context.setVariable(key, value)
}
thymeleafTemplateEngine.process(templateName, context)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment