AjaxLink setResponsePage to a stream = queue is not resumed after redirect.
---------------------------------------------------------------------------
Key: WICKET-1838
URL: https://issues.apache.org/jira/browse/WICKET-1838
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.3.4
Environment: wicket 1.3.4
tomcat 5.5.16
Reporter: Louis Letourneau
When I click on an AjaxLink that does a setResponsePage towards a
ResourceStreamRequestTarget, afetr the download, the links on the page become
non-clickable. In the Ajax debug window I get a 'Channel busy - postponing'.
Details:
I have a page with many AjaxLinks. The links check whether some data is
available. If the data is available it does a setResponsePage towards a
BookmarkablePage that can work with the data.
The Page that handles the data is mounted on a 'custom'
QueryStringUrlCodingStrategy. In 'decode()' the strategy checks if
manipulations are needed. If not the strategy answers with a
ResourceStreamRequestTarget.
So here's the path that causes the error:
onClick->setResponsePage->decode->ResourceStreamRequestTarget
Once a link has been clicked no other links are clickable on the page.
The redirect seems to happen, but only once.
Say there are 3 files to download on the page, I would need to:
click link1 -> download the file -> refresh the page -> click link2 -. etc.
I shouldn't need to refresh the page.
If I don't refresh the page, when I click link2 I'll get 'Channel busy -
postponing'.
AjaxLink Code:
-------------------------------------------->
public void onClick(AjaxRequestTarget target)
{
if(file.isOnline()) {
PageParameters params = new PageParameters();
params.add("id", String.valueOf(typeId));
params.add("type", type.toString());
setResponsePage(StageableFilePage.class, params);
}
else {
modal.show(target);
}
}
-------------------------------------------->
QueryStringUrlCodingStrategy Code:
-------------------------------------------->
public IRequestTarget decode(RequestParameters requestParameters) {
[..get id and fileType and make sure the user has priviledges..]
final StageableFile file = resolveFile(id, fileType);
if(file.isOnline()) {
IResourceStream resourceStream = new FileResourceStream(file);
//Content-type will be set by the ResourceStreamRequestTarget
ResourceStreamRequestTarget rsrt = new
ResourceStreamRequestTarget(resourceStream) {
@Override
public String getFileName() {
return file.getName();
}
};
return rsrt;
}
else {
return super.decode(requestParameters);
}
}
-------------------------------------------->
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.