With Tiles 2.1 and 2.2 it is possible to use old Struts-Tiles definition files, since 1.1 version.
To use this feature it is needed to:
Override the createDefinitionsReader method this way:
@Override
protected DefinitionsReader createDefinitionsReader(Object context,
TilesApplicationContext applicationContext,
TilesRequestContextFactory contextFactory) {
return new CompatibilityDigesterDefinitionsReader();
}You need to add a renderer for the "page" attribute type, that is in fact the "template" type. So override the registerAttributeRenderers method.
@Override
protected void registerAttributeRenderers(
BasicRendererFactory rendererFactory, Object context,
TilesApplicationContext applicationContext,
TilesRequestContextFactory contextFactory, TilesContainer container,
AttributeEvaluator evaluator) {
super.registerAttributeRenderers(rendererFactory, context,
applicationContext, contextFactory, container, evaluator);
TemplateAttributeRenderer templateRenderer = new TemplateAttributeRenderer();
templateRenderer.setApplicationContext(applicationContext);
templateRenderer.setRequestContextFactory(contextFactory);
templateRenderer.setEvaluator(evaluator);
rendererFactory.registerRenderer("page", templateRenderer);
}WARNING!!! Configuration with initialization parameter has been deprecated! If you still want to use it, please refer to the 2.1 version of this page.
A better, and more powerful, choice is to rewrite the definition files, to use the new features of Tiles 2.1.
Most of XML elements and attributes can be translated one-to-one or many-to-one without losing functionality from the 1.1-1.3 to the 2.1 DTD version.
The new header to be put in your Tiles definitions files is:
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">| Struts-Tiles | Apache Tiles |
| <component-definitions> <tiles-definitions> | <tiles-definitions> |
| page path template | template |
| controllerClass controllerUrl | preparer [1] |
The page attribute type has been removed, use template instead.
The rest of the conversion is in the table below.
| Struts-Tiles | Apache Tiles |
| <put> | <put-attribute> |
| <putList> | <put-list-attribute> |
| <add> | <add-attribute> [2] <add-list-attribute> [3] |
| content value | value |
| direct="true" | type="string" |