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.

Reply via email to