Interface ITemplateResolver
-
- All Known Implementing Classes:
AbstractConfigurableTemplateResolver
,AbstractTemplateResolver
,ClassLoaderTemplateResolver
,DefaultTemplateResolver
,FileTemplateResolver
,ServletContextTemplateResolver
,StringTemplateResolver
,UrlTemplateResolver
public interface ITemplateResolver
Interface for all Template Resolvers.
Template resolvers are in charge of resolving templates into
TemplateResolution
objects that contain additional information related to the template like:- Its corresponding template resource (see
ITemplateResource
). - The Template Mode to be applied to this template:
TemplateMode
- Whether the template can be cached or not.
- If the template can be cached, (optionally) the time it will live in cache.
The Template Resolver will usually get all this information from a set of configurations like applicability patterns, template mode patterns, etc. Each
ITemplateResolver
implementation will provide its own set of methods for specifying such configurations.The fact that a Template Resolver returns a
TemplateResolution
does not necessarily mean that the resolved template resource exists. It might only be so if the template resolver is configured to perform an existence check on the resource before returning a resolution result (by means of callingITemplateResource.exists()
), which might be configurable on a per-ITemplateResolver
-implementation basis. Implementations might choose not to check resource existance by default in order to avoid the possible performance impact of a double access to the resource.A Template Engine can be configured several template resolvers, and these will be asked in order (according to the value returned by
getOrder()
) to return aTemplateResolution
object for each template name. If a template resolver returns null for a specific resolution, the next one in the chain is asked. Template Resolvers that are not configured an order will be executed last in the chain.Implementations of this interface should be thread-safe.
Note a class with this name existed since 1.0, but it was completely reimplemented in Thymeleaf 3.0
- Since:
- 3.0.0
- Author:
- Daniel Fernández
- See Also:
ITemplateResource
,ClassLoaderTemplateResolver
,FileTemplateResolver
,ServletContextTemplateResolver
,StringTemplateResolver
,UrlTemplateResolver
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description String
getName()
Returns the name of this template resolver.Integer
getOrder()
Return the order in which this template resolver will be executed in the chain when several template resolvers are set for the same Template Engine.TemplateResolution
resolveTemplate(IEngineConfiguration configuration, String ownerTemplate, String template, Map<String,Object> templateResolutionAttributes)
Tries to resolve a template.
-
-
-
Method Detail
-
getName
String getName()
Returns the name of this template resolver. Used in logs and configuration details.
- Returns:
- the template resolver name.
-
getOrder
Integer getOrder()
Return the order in which this template resolver will be executed in the chain when several template resolvers are set for the same Template Engine.
- Returns:
- the order of this resolver in the chain.
-
resolveTemplate
TemplateResolution resolveTemplate(IEngineConfiguration configuration, String ownerTemplate, String template, Map<String,Object> templateResolutionAttributes)
Tries to resolve a template.
The method arguments contain all the info needed for trying to resolve the template. The Template Resolver will apply its configuration (prefixes/suffixes, template mode patterns, cache configurations, etc) and return a
TemplateResolution
object.The
ownerTemplate
, which might be null, will be specified when the template is resolved in order to be used as a fragent to be inserted into a higher level template (the owner). Most template resolver implementations will simply ignore this argument, but others might change their resolution results depending on the owner template that is inserting the resolved fragment.The fact that a Template Resolver returns a
TemplateResolution
does not necessarily mean that the resolved template resource exists. It might only be so if the template resolver is configured to perform an existence check on the resource before returning a resolution result (by means of callingITemplateResource.exists()
), which might be configurable on a per-ITemplateResolver
-implementation basis. Implementations might choose not to check resource existance by default in order to avoid the possible performance impact of a double access to the resource.Note that the template selectors that might be used for a executing or inserting a template are not specified to the template resolver. The reason is template selectors are applied by the parser, not the template resolvers, and allowing the resolver to take any decisions based on template selectors (like e.g. omitting some output from the resource) could harm the correctness of the selection operation performed by the parser.
- Parameters:
configuration
- the engine configuration.ownerTemplate
- the containing template from which we want to resolve a new one as a fragment. Can be null.template
- the template to be resolved (usually its name).templateResolutionAttributes
- the template resolution attributes to be used (usually coming from aTemplateSpec
instance. Can be null.- Returns:
- a TemplateResolution object (which might represent an existing resource or not), or null if the template could not be resolved.
-
-