blob: 4ca41c483fe987f0de32e2f681f2b9e851bb5b97 [file] [log] [blame]
~~ $Id$
~~
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
~~
-----------
Migrating Tiles configuration files
-----------
{Reusing old Tiles configuration files}
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:
* include the <<<tiles-compat-xxx.jar>>> package in the classpath;
* configure the compatibility definitions reader instance, that is able to
read old definition files.
* Configuration
Override the
{{{../apidocs/org/apache/tiles/factory/BasicTilesContainerFactory.html#createDefinitionsReader(java.lang.Object,%20org.apache.tiles.TilesApplicationContext,%20org.apache.tiles.context.TilesRequestContextFactory)}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
{{{../apidocs/org/apache/tiles/factory/BasicTilesContainerFactory.html#registerAttributeRenderers(org.apache.tiles.renderer.impl.BasicRendererFactory,%20java.lang.Object,%20org.apache.tiles.TilesApplicationContext,%20org.apache.tiles.context.TilesRequestContextFactory,%20org.apache.tiles.TilesContainer,%20org.apache.tiles.evaluator.AttributeEvaluator)}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/framework/migration/configuration.html}2.1 version of this page}}.
Tiles configuration files translation
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.
* Header
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">
------------------------------------------------------------
* Definitions attributes
*---------------------------------+--------------------------------+
| <<Struts-Tiles>> | <<Apache Tiles\u0099>> |
*---------------------------------+--------------------------------+
| <<<\<component-definitions\>>>> | <<<\<tiles-definitions\>>>> |
| <<<\<tiles-definitions\>>>> | |
*---------------------------------+--------------------------------+
| <<<page>>> | <<<template>>> |
| <<<path>>> | |
| <<<template>>> | |
*---------------------------------+--------------------------------+
| <<<controllerClass>>> | <<<preparer>>> [1] |
| <<<controllerUrl>>> | |
*---------------------------------+--------------------------------+
* \[1\] The default behaviour of <<<preparer>>> is to create and use a
single instance of the specified class. Anyway it is still possible to use a
URL as a preparer under a Struts 1 environment by using the
{{{http://svn.apache.org/repos/asf/struts/struts1/trunk/tiles2/}Struts 1 - Apache Tiles\u0099}}
integration module, still under development.
* Putting and adding attributes values
The <<<page>>> attribute type has been removed, use <<<template>>> instead.
The rest of the conversion is in the table below.
*-----------------------+-----------------------------------------------+
| <<Struts-Tiles>> | <<Apache Tiles\u0099>> |
*-----------------------+-----------------------------------------------+
| <<<\<put\>>>> | <<<\<put-attribute\>>>> |
*-----------------------+-----------------------------------------------+
| <<<\<putList\>>>> | <<<\<put-list-attribute\>>>> |
*-----------------------+-----------------------------------------------+
| <<<\<add\>>>> | <<<\<add-attribute\>>>> [2] |
| | <<<\<add-list-attribute\>>>> [3] |
*-----------------------+-----------------------------------------------+
| <<<content>>> | <<<value>>> |
| <<<value>>> | |
*-----------------------+-----------------------------------------------+
| <<<direct="true">>> | <<<type="string">>> |
*-----------------------+-----------------------------------------------+
* \[2\] <<<\<add-attribute\>>>> is used when it is needed to add a single
attribute to a list attribute.
* \[3\] <<<\<add-list-attribute\>>>> is used when it is needed to a list
attribute as an element of another list attribute.
[]
* Previous Migration Pages
** {{{./index.html}Introduction }}
* Next Migration Pages
** {{{./tags.html}Tiles JSP tags}}
** {{{./apis.html}Java APIs considerations}}.
** {{{./extension.html}Tiles extensions}}.