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.