Nabi Zamani created TILES-570:
---------------------------------

             Summary: Init via listeners and configuring DEFINITIONS_CONFIG via 
context-param does not work as documented
                 Key: TILES-570
                 URL: https://issues.apache.org/jira/browse/TILES-570
             Project: Tiles
          Issue Type: Bug
          Components: tiles-core, tiles-servlet
    Affects Versions: 3.0.1
            Reporter: Nabi Zamani


Please see http://tiles.apache.org/tutorial/configuration.html for some docs 
and go to the section "Load the Tiles listener. Specify it in your web.xml 
file".

Issue 1:
The following configuration is invalid because 
org.apache.tiles.web.startup.TilesListener does not exist anymore:

<listener>
    <listener-class>org.apache.tiles.web.startup.TilesListener</listener-class>
</listener>

Issue 2:
Because of Issue 1 I have chosen to use the 
org.apache.tiles.web.startup.simple.SimpleTilesListener for starting the Tiles 
engine (see http://tiles.apache.org/framework/config-reference.html): 

<listener>
    
<listener-class>org.apache.tiles.web.startup.simple.SimpleTilesListener</listener-class>
</listener>

According to the docs this should be possible:

<context-param>
    <param-name>
        org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
    </param-name>
    <param-value>/WEB-INF/classes/tiles.xml</param-value>
</context-param>

But org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG does not exist 
(it was mentioned to be deprecated in older versions of Tiles!).

Issue 3:
Because of issue 2 I used 
org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG: 

<context-param>          
    <param-name>
        org.apache.tiles.definition.DefinitionsFactory.DEFINITIONS_CONFIG
    </param-name>
    <param-value>/WEB-INF/classes/tiles.xml</param-value>        
</context-param>

But that does also not allow to load the custom tiles.xml file.

Issue 4:
I checked sources and found this in 
org.apache.tiles.factory.BasicTilesContainerFactory (tiles-core-3.0.1.jar):

/**
     * Returns a list containing the resources to be parsed. By default, it 
returns a
     * list containing the resource at "/WEB-INF/tiles.xml".
     * @param applicationContext The Tiles application context.
     * @return The resources.
     * @since 2.1.1
     */
    protected List<ApplicationResource> getSources(ApplicationContext 
applicationContext) {
        List<ApplicationResource> retValue = new 
ArrayList<ApplicationResource>(1);
        retValue.add(applicationContext.getResource("/WEB-INF/tiles.xml"));
        return retValue;
    }

As you can see "/WEB-INF/tiles.xml" is hard coded. That's why using the 
context-param has no influence at all. The only valid location is 
"/WEB-INF/tiles.xml" and that's it.

Would be great if this would be fixed in one of the next releases.

Also see the docs here:
http://tiles.apache.org/config-reference.html#org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to