Class ThymeleafView
- All Implemented Interfaces:
View
@RestOp-annotated methods to ask the framework to
render a Thymeleaf template.
Companion to ThymeleafMixin and ThymeleafViewRenderer: the mixin sets up
the /thymeleaf/* mount and registers the renderer; the renderer detects
ThymeleafView returns in the response-processor chain and asks the configured
org.thymeleaf.TemplateEngine to process(templateName, context, writer) directly
onto the response writer.
Usage:
The template name is engine-relative — the configured
ClassLoaderTemplateResolver (or whatever resolver the active
org.thymeleaf.TemplateEngine carries) prepends its own prefix and appends its own suffix
(typically .html). With the bridge's default engine + basePath("/templates/"),
ThymeleafView.of("hello") resolves to /templates/hello.html on the classpath.
Immutability:
Each attr(...) / attrs(...) / header(...) call returns a new
ThymeleafView carrying the additional binding; the original instance is unchanged. This
keeps ThymeleafView a value type safe to share across requests (e.g. as a static
singleton built once and returned from many handlers).
See Also:
- Since:
- 10.0.0
-
Method Summary
Modifier and TypeMethodDescriptionReturns a copy of this view with the given attribute added (or replaced if a binding forkeyalready exists).Returns a copy of this view with all entries from the given map added (or replaced if a binding for any key already exists).The attributes to expose to the template.Optional response headers applied by the renderer before forwarding to the templating engine.The name of the template to render — typically a path relative to the mixin-configured base path.Returns a copy of this view with the given response header set on the rendered response.static ThymeleafViewCreates a newThymeleafViewcarrying the given template name and no attributes.toString()
-
Method Details
-
of
Creates a newThymeleafViewcarrying the given template name and no attributes.The template name is engine-relative; the configured
org.thymeleaf.TemplateEngineresolver supplies the prefix and suffix. For the bridge's default engine:"hello"resolves to<basePath>hello.html.- Parameters:
templateName- The template name (engine-relative, no extension). Must not benullor blank.- Returns:
- A new
ThymeleafViewinstance. - Throws:
IllegalArgumentException- IftemplateNameisnullor blank.
-
attr
Returns a copy of this view with the given attribute added (or replaced if a binding forkeyalready exists).Each attribute is exposed to the template as a named variable (e.g.
th:text="${name}"resolves the"name"key from the populatedContext).nullvalues are rejected at build-time because a ThymeleafContextsilently dropsnull-valued bindings, masking what is typically a caller bug; rejecting up-front surfaces the mistake at the call site.- Parameters:
key- The attribute key (exposed inside the template as${key}). Must not benullor blank.value- The attribute value. Must not benull.- Returns:
- A new
ThymeleafViewcarrying the additional attribute. - Throws:
IllegalArgumentException- Ifkeyisnullor blank, orvalueisnull.
-
attrs
Returns a copy of this view with all entries from the given map added (or replaced if a binding for any key already exists).- Parameters:
values- The attributes to add.nullis treated as an empty map (the result is the same instance with no entries added).- Returns:
- A new
ThymeleafViewcarrying the additional attributes. - Throws:
IllegalArgumentException- If any entry has anull/blank key or anullvalue.
-
header
Returns a copy of this view with the given response header set on the rendered response.Typical usage:
.header("Content-Type", "text/html; charset=UTF-8")or.header("Cache-Control", "no-store"). The renderer applies these headers viaHttpServletResponse.setHeader(...)before writing the rendered output.- Parameters:
name- The header name. Must not benullor blank.value- The header value. Must not benull.- Returns:
- A new
ThymeleafViewcarrying the additional response header. - Throws:
IllegalArgumentException- Ifnameisnullor blank, orvalueisnull.
-
getTemplateName
Description copied from interface:ViewThe name of the template to render — typically a path relative to the mixin-configured base path.For example,
"hello.jsp"with a JSP mixinbasePath("/WEB-INF/views/")resolves to"/WEB-INF/views/hello.jsp"on the request dispatcher.- Specified by:
getTemplateNamein interfaceView- Returns:
- The template name. Never
null.
-
getAttributes
Description copied from interface:ViewThe attributes to expose to the template.Each entry is forwarded to the templating engine as a named binding accessible from inside the template (e.g.
${name}in JSP / EL,th:text="${name}"in Thymeleaf).- Specified by:
getAttributesin interfaceView- Returns:
- The attributes map. Never
null; returns an immutable empty map when no attributes are bound.
-
getResponseHeaders
Description copied from interface:ViewOptional response headers applied by the renderer before forwarding to the templating engine.Typical use cases: setting
Content-Type(e.g."text/html; charset=UTF-8") orCache-Controlon the rendered response. The default implementation returns an empty map so mostViewimpls don't need to override it.- Specified by:
getResponseHeadersin interfaceView- Returns:
- An immutable map of headers to apply. Never
null; defaults to an empty map.
-
toString
-