Class TemplateSpec
- Object
-
- org.thymeleaf.TemplateSpec
-
- All Implemented Interfaces:
Serializable
public final class TemplateSpec extends Object implements Serializable
Specification class containing everything needed by the template engine related to the template to be processed. Objects of this class are normally used as an argument to the different
process(...)
methods atITemplateEngine
.The only required value in a template specification is the template, which normally represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.This is not to be mistaken for the template processing context, containing the data to be used during the processing of the template (variables, locale, etc.) and modelled by the
IContext
interface.The data contained in a Template Specification relates to and identifies the template itself, independently of any data (variables, etc.) used for processing it.
Objects of this class are thread-safe.
- Since:
- 3.0.0
- Author:
- Daniel Fernández
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description TemplateSpec(String template, String outputContentType)
Build a new object of this class, specifying template and also output content type (MIME type).TemplateSpec(String template, Map<String,Object> templateResolutionAttributes)
Build a new object of this class, specifying template and also template mode.TemplateSpec(String template, Set<String> templateSelectors, String outputContentType, Map<String,Object> templateResolutionAttributes)
Build a new object of this class, specifying an output content type (MIME type).TemplateSpec(String template, Set<String> templateSelectors, TemplateMode templateMode, Map<String,Object> templateResolutionAttributes)
Build a new object of this class, specifying a template mode that should be forced for template execution, ignoring the mode resolved by template resolvers.TemplateSpec(String template, TemplateMode templateMode)
Build a new object of this class, specifying template and also template mode.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object o)
String
getOutputContentType()
Returns the output content type (MIME type).String
getTemplate()
Returns the template (usually the template name).TemplateMode
getTemplateMode()
Returns the template mode, if it has been specified.Map<String,Object>
getTemplateResolutionAttributes()
Returns the template resolution attributes, if any have been specified.Set<String>
getTemplateSelectors()
Returns the template selectors, if there are any.int
hashCode()
boolean
hasTemplateMode()
Returns whether this spec has template mode specified or not.boolean
hasTemplateResolutionAttributes()
Returns whether this spec includes template resolution attributes or not.boolean
hasTemplateSelectors()
Returns whether this spec has template selectors specified or not.boolean
isOutputSSE()
Returns whether output should be Server-Sent Events (SSE) or not.String
toString()
-
-
-
Constructor Detail
-
TemplateSpec
public TemplateSpec(String template, TemplateMode templateMode)
Build a new object of this class, specifying template and also template mode.
The template normally represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.The template mode only needs to be specified in cases when we want to force a template mode to be used for a template, independently of the mode that is selected for it by the configured template resolvers.
This constructor will set no template selectors or template resolution attributes.
- Parameters:
template
- the template (usually the template name), required.templateMode
- the template mode to be forced, can be null.
-
TemplateSpec
public TemplateSpec(String template, String outputContentType)
Build a new object of this class, specifying template and also output content type (MIME type). Most of the times this will force a template mode for template execution (e.g.
text/html
,application/javascript
), but not always (e.g.text/event-stream
).The template normally represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.Supported relations between template mode and output content type are:
- HTML:
text/html
,application/xhtml+xml
- XML:
application/xml
- JAVASCRIPT:
application/javascript
,application/x-javascript
,application/ecmascript
,text/javascript
,text/ecmascript
,application/json
- CSS:
text/css
- TEXT:
text/plain
The
text/event-stream
content type will also be supported, but will have no effect in forcing a template mode. Instead, it will put the engine into Server-Sent Event (SSE) output mode.Note content type parameters will be ignored (only the mime type itself will be used).
This constructor will set no template selectors or template resolution attributes.
- Parameters:
template
- the template (usually the template name), required.outputContentType
- the expected output content type, can be null.- Since:
- 3.0.6
- HTML:
-
TemplateSpec
public TemplateSpec(String template, Map<String,Object> templateResolutionAttributes)
Build a new object of this class, specifying template and also template mode.
The template normally represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.The template resolution attributes are meant to be passed to the template resolvers (see
ITemplateResolver
during template resolution, as a way of configuring their execution for the template being processed.Note that template resolution attributes are considered a part of the identifier of a template, so they will be used as a part of the keys for cached templates. It is therefore required that template attribute maps contain values with valid
equals(Object)
andhashCode()
implementations. Therefore, using simple (and fast)Map<String,String>
maps is the recommended option.This constructor will set no template selectors or forced template mode.
- Parameters:
template
- the template (usually the template name), required.templateResolutionAttributes
- the template resolution attributes, can be null.
-
TemplateSpec
public TemplateSpec(String template, Set<String> templateSelectors, TemplateMode templateMode, Map<String,Object> templateResolutionAttributes)
Build a new object of this class, specifying a template mode that should be forced for template execution, ignoring the mode resolved by template resolvers.
The template usually represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.Template selectors allow the possibility to process only a part of the specified template, expressing this selection in a syntax similar to jQuery, CSS or XPath selectors. Note this is only available for markup template modes (
HTML
,XML
). For more info on template selectors syntax, have a look at AttoParser's markup selectors documentation.The template mode only needs to be specified in cases when we want to force a template mode to be used for a template, independently of the mode that is selected for it by the configured template resolvers.
The template resolution attributes are meant to be passed to the template resolvers (see
ITemplateResolver
during template resolution, as a way of configuring their execution for the template being processed.Note that template resolution attributes are considered a part of the identifier of a template, so they will be used as a part of the keys for cached templates. It is therefore required that template attribute maps contain values with valid
equals(Object)
andhashCode()
implementations. Therefore, using simple (and fast)Map<String,String>
maps is the recommended option.- Parameters:
template
- the template (usually the template name), required.templateSelectors
- the template selectors to be applied on the template.templateMode
- the template mode to be forced, can be null.templateResolutionAttributes
- the template resolution attributes, can be null.
-
TemplateSpec
public TemplateSpec(String template, Set<String> templateSelectors, String outputContentType, Map<String,Object> templateResolutionAttributes)
Build a new object of this class, specifying an output content type (MIME type). Most of the times this will force a template mode for template execution (e.g.
text/html
,application/javascript
), but not always (e.g.text/event-stream
).The template usually represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.Template selectors allow the possibility to process only a part of the specified template, expressing this selection in a syntax similar to jQuery, CSS or XPath selectors. Note this is only available for markup template modes (
HTML
,XML
). For more info on template selectors syntax, have a look at AttoParser's markup selectors documentation.The template resolution attributes are meant to be passed to the template resolvers (see
ITemplateResolver
during template resolution, as a way of configuring their execution for the template being processed.Supported relations between template mode and output content type are:
- HTML:
text/html
,application/xhtml+xml
- XML:
application/xml
- JAVASCRIPT:
application/javascript
,application/x-javascript
,application/ecmascript
,text/javascript
,text/ecmascript
,application/json
- CSS:
text/css
- TEXT:
text/plain
The
text/event-stream
content type will also be supported, but will have no effect in forcing a template mode. Instead, it will put the engine into Server-Sent Event (SSE) output mode.Note content type parameters will be ignored (only the mime type itself will be used).
Note that template resolution attributes are considered a part of the identifier of a template, so they will be used as a part of the keys for cached templates. It is therefore required that template attribute maps contain values with valid
equals(Object)
andhashCode()
implementations. Therefore, using simple (and fast)Map<String,String>
maps is the recommended option.- Parameters:
template
- the template (usually the template name), required.templateSelectors
- the template selectors to be applied on the template.outputContentType
- the expected output content type, can be null.templateResolutionAttributes
- the template resolution attributes, can be null.- Since:
- 3.0.6
- HTML:
-
-
Method Detail
-
getTemplate
public String getTemplate()
Returns the template (usually the template name).
This template normally represents the template name, but can be the entire template contents if the template is meant to be specified as a String and resolved by a
StringTemplateResolver
.- Returns:
- the template. Cannot be null.
-
hasTemplateSelectors
public boolean hasTemplateSelectors()
Returns whether this spec has template selectors specified or not.
- Returns:
true
of there are template selectors,false
if not.
-
getTemplateSelectors
public Set<String> getTemplateSelectors()
Returns the template selectors, if there are any.
Template selectors allow the possibility to process only a part of the specified template, expressing this selection in a syntax similar to jQuery, CSS or XPath selectors. Note this is only available for markup template modes (
HTML
,XML
). For more info on template selectors syntax, have a look at AttoParser's markup selectors documentation.- Returns:
- the template selectors, or
null
if there are none.
-
hasTemplateMode
public boolean hasTemplateMode()
Returns whether this spec has template mode specified or not.
- Returns:
true
of there is a template mode,false
if not.
-
getTemplateMode
public TemplateMode getTemplateMode()
Returns the template mode, if it has been specified.
The template mode only needs to be specified in cases when we want to force a template mode to be used for a template, independently of the mode that is selected for it by the configured template resolvers.
- Returns:
- the template mode specified, or
null
if there isn't any.
-
hasTemplateResolutionAttributes
public boolean hasTemplateResolutionAttributes()
Returns whether this spec includes template resolution attributes or not.
- Returns:
true
of there are template resolution attributes,false
if not.
-
getTemplateResolutionAttributes
public Map<String,Object> getTemplateResolutionAttributes()
Returns the template resolution attributes, if any have been specified.
The template resolution attributes are meant to be passed to the template resolvers (see
ITemplateResolver
during template resolution, as a way of configuring their execution for the template being processed.Note that template resolution attributes are considered a part of the identifier of a template, so they will be used as a part of the keys for cached templates. It is therefore required that template attribute maps contain values with valid
equals(Object)
andhashCode()
implementations. Therefore, using simple (and fast)Map<String,String>
maps is the recommended option.- Returns:
- the template resolution attributes.
-
getOutputContentType
public String getOutputContentType()
Returns the output content type (MIME type). Most of the times this will force a template mode for template execution (e.g.
text/html
,application/javascript
), but not always (e.g.text/event-stream
).Supported relations between template mode and output content type are:
- HTML:
text/html
,application/xhtml+xml
- XML:
application/xml
- JAVASCRIPT:
application/javascript
,application/x-javascript
,application/ecmascript
,text/javascript
,text/ecmascript
,application/json
- CSS:
text/css
- TEXT:
text/plain
The
text/event-stream
content type will also be supported, but will have no effect in forcing a template mode. Instead, it will put the engine into Server-Sent Event (SSE) output mode.Note content type parameters will be ignored (only the mime type itself will be used).
- Returns:
- the output content type, or
null
if none was specified.
- HTML:
-
isOutputSSE
public boolean isOutputSSE()
Returns whether output should be Server-Sent Events (SSE) or not.
Server-Sent Events mode is enabled by setting the
text/event-stream
mime type as *output content type* constructor argument.- Returns:
- true if output is supposed to be done via Server-Sent Events (SSE), false if not.
- Since:
- 3.0.6
-
-