[
https://issues.apache.org/jira/browse/WICKET-4829?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13481782#comment-13481782
]
Chris Colman commented on WICKET-4829:
--------------------------------------
I have found the cause of the problem but not sure of the best fix.
The cause:
In ComponentResolvers#resolve in both standard and non standard namespace
scenarios the resolve process falls back to the resolveByApplication option.
resolveByApplication uses the application's component resolver collection that
was established at application init - obviously none of these have a reference
to the current markupStream (which indirectly stores the namespace for the
stream) and that is indeed the case for the RelativePathPrefixHandler stored in
the application component resolver collection as it is created in "resolver"
mode (markupStream == null).
RelativePathPrefixHander#resolve calls
RelativePathPrefixHander#getWicketRelativePathPrefix() which calls the base
class' getWicketNamespace() method which, having markupStream == null will
always return "wicket" and not the namespace declared for the current
markupStream. This is why the component can not be resolved.
Possibly solution:
Perhaps RelativePathPrefixHander#getWicketRelativePathPrefix() could take a
MarkupStream as a parameter and, if not null return, the namespace associated
with that markupStream.
> Page fails if non default namespace is specified and href has relative path
> ---------------------------------------------------------------------------
>
> Key: WICKET-4829
> URL: https://issues.apache.org/jira/browse/WICKET-4829
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 6.2.0
> Environment: Windows, Java 6.x
> Reporter: Chris Colman
> Attachments: nonStdNamespaceBugW6.2.zip
>
>
> Initially this problem was occurring in a page with an enclosure and so I
> thought it was specific to enclosures but on minimalizing the quickstart it
> is apparent that it happens on any page where a non default namespace is
> specified AND a href has a relative path.
>
> The attached quickstart has a single page with no components at all. In 6.x
> the page fails if a non default namespace is specified in the <html> tag.
> This works fine in 1.4.x and 1.5.x
> <html xmls:foobar>
> causes:
> Last cause: Unable to find component with id 'foobar_relative_path_prefix_'
> in [HtmlHeaderContainer [Component id = _header_0]]
> Expected: '_header_0.foobar_relative_path_prefix_'.
> Found with similar names: ''
> If we remove the non standard namespace declaration from the html element
> then the page works fine.
> Also, if we remove the line:
> <link rel="stylesheet" href="style.css" type="text/css" media="screen"
> title="Stylesheet"/>
> from the HomePage.html then the problem doesn't occur.
> Problem could possibly be related to how RelativePathPrefixHanlder deals with
> a non default namespace.
--
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