Details
Description
When the autolinker can't find the target of a src or href attribute, it falls back to a default autocomponent, that supposedly leaves the tag unchanged. Quoting AutolinkResolver:
if (autoComponent == null) { // resolving didn't have the desired result or there was no delegate // found; fallback on the default resolving which is a simple // component that leaves the tag unchanged autoComponent = new AutolinkExternalLink(componentId, pathInfo.reference); }
...except that AutolinkExternalLink is an ExternalLink which is an AbstractLink which does change the original tag. Namely, when applied to something that is not <a> it adds an onclick attribute. This leads to something like the following:
<img src="does-not-exist.png" onclick="window.location.href='does-not-exist.png';return false;"/>
...which is clearly nonsensical. This can happen when the referenced image is not in the classpath - it could either be missing, or it could be in the webapp root somewhere, which can be the case for some legacy applications. (This is how I came across this.)
A simple fix appears to be to use a plain WebMarkupContainer in place of this particular AutolinkExternalLink. All tests pass when I do that.
This affects all versions from 1.5 on upward. I'll prepare a pull request.
Attachments
Issue Links
- is related to
-
WICKET-6377 Autolinking breaks hierarchy for nested elements
- Resolved
- links to