Class JspView
- All Implemented Interfaces:
View
@RestOp-annotated methods to ask the framework to
render a JSP template.
Companion to JspMixin and JspViewRenderer: the mixin sets up the
/jsp/* mount and registers the renderer; the renderer detects JspView returns
in the response-processor chain and dispatches via
ServletContext.getRequestDispatcher(...).forward(...).
Usage:
Immutability:
Each attr(...) / attrs(...) / header(...) call returns a new
JspView carrying the additional binding; the original instance is unchanged. This keeps
JspView 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 JspViewCreates a newJspViewcarrying the given template name and no attributes.toString()
-
Method Details
-
of
Creates a newJspViewcarrying the given template name and no attributes.- Parameters:
templateName- The template name (relative to thebase path). Must not benullor blank.- Returns:
- A new
JspViewinstance. - Throws:
IllegalArgumentException- IftemplateNameisnullor blank.
-
attr
Returns a copy of this view with the given attribute added (or replaced if a binding forkeyalready exists).Per the Servlet spec, passing
nulltosetAttribute(name, null)removes the binding rather than setting it;JspViewmirrors that constraint at build-time so the renderer never has to short-circuit a request-attribute write at dispatch time.- Parameters:
key- The attribute key (exposed inside the JSP as${key}). Must not benullor blank.value- The attribute value. Must not benull.- Returns:
- A new
JspViewcarrying 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 logically the same instance with no entries added).- Returns:
- A new
JspViewcarrying the additional attributes.
-
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 forwarding to the JSP engine.- Parameters:
name- The header name. Must not benullor blank.value- The header value. Must not benull.- Returns:
- A new
JspViewcarrying 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
-