Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
5.0.6
-
None
Description
Quick summary: Tapestry 5.0.6 doesn't check the existence of a page when an URL which looks like an action request is requested (any url that has a period).
Long description:
If I request the page /xxx, where xxx is a non-existing page, T5 raises a
standard HTTP 404 error that I'm able to catch through the <error-page>
tag in my web.xml. So far, so good.
If I request the page /xxx.html, where xxx is a non-existing page, T5 does
not raise a 404 error: it throws an IllegalArgumentException:
java.lang.IllegalArgumentException: Unable to resolve 'cursos/id10' to a
known page name. Available page names: [list of my Tapestry pages].
at
org.apache.tapestry.internal.services.ComponentClassResolverImpl$8.invoke(ComponentClassResolverImpl.java:417)
at
org.apache.tapestry.internal.services.ComponentClassResolverImpl$8.invoke(ComponentClassResolverImpl.java:412)
at
org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
at
org.apache.tapestry.internal.services.ComponentClassResolverImpl.canonicalizePageName(ComponentClassResolverImpl.java:410)
at
$ComponentClassResolver_1166cebf61d.canonicalizePageName($ComponentClassResolver_1166cebf61d.java)
at
org.apache.tapestry.internal.services.PagePoolImpl.checkout(PagePoolImpl.java:59)
[snip]
It looks like non-existent pages checks are done with normal page
requests, but not with action requests.