Wildcards and some combinations of locale fails to find definition
------------------------------------------------------------------

                 Key: TILES-340
                 URL: https://issues.apache.org/struts/browse/TILES-340
             Project: Tiles
          Issue Type: Bug
    Affects Versions: 2.1.0
         Environment: Glassfish v2, Spring 2.5, Linux (opensuse 11)
            Reporter: Christian Ihle


I have the following definition:

{code}
<definition name="standardLayout" template="/WEB-INF/layouts/standard.jspx" />

<definition name="*/*" extends="standardLayout">
        <put-attribute name="body" value="/WEB-INF/jspx/{1}/{2}.jspx" />
</definition>
{code}

So I set Firefox to use _English/United States [en-us]_ and open a page that 
matches the wildcard. This works fine. Then I change the language setting in 
Firefox to _English [en]_, and open the same page. Then I get an exception:

{noformat}
Dec 10, 2008 9:52:10 AM org.apache.tiles.impl.BasicTilesContainer render
WARNING: Unable to find the definition 'hjem/start'
Dec 10, 2008 9:52:10 AM org.apache.tiles.impl.BasicTilesContainer render
WARNING: Unable to find the definition 'feil/500'
Dec 10, 2008 9:52:10 AM org.apache.catalina.core.StandardWrapperValve log
SEVERE: StandardWrapperValve[tiles]: PWC1406: Servlet.service() for servlet 
tiles threw exception
org.apache.tiles.definition.NoSuchDefinitionException: feil/500
        at 
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:612)
        at 
org.apache.tiles.impl.BasicTilesContainer.render(BasicTilesContainer.java:307)
        at 
org.springframework.web.servlet.view.tiles2.TilesView.renderMergedOutputModel(TilesView.java:75)
        at 
org.springframework.js.ajax.tiles2.AjaxTilesView.renderMergedOutputModel(AjaxTilesView.java:108)
        at 
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:257)
        at 
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1183)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:902)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:807)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:718)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at 
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
        at 
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at 
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at 
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at 
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at 
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at 
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at 
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at 
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
{noformat}

This works the same with other languages that has sub-languages as well. Like 
_Spanish/Chile [es-cl]_ works, and _Spanish [es]_ fails. _German/Germany 
[de-de]_ works, _German [de]_ fails.
But: if I do this the other way around, it works! Open the page with _English 
[en]_ works, then I open with  _English/United States [en-us]_ and it works 
too. Very strange.

And if I don't use wildcards for the definition, then it works no matter what. 
With Tiles 2.1.0 and 2.0.6.


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to