Hi,

I'm not sure that this really works.
With your code the Ajax request will end with .csv response, not with
<ajax-response>. The indicator may disappear but the .csv data wont be
presented to the user/browser. It will be swallowed in the ajax
response.

I think you need
https://cwiki.apache.org/WICKET/ajax-update-and-file-download-in-one-blow.html

On Mon, Mar 5, 2012 at 5:13 PM, Robert Szmurlo <rob...@iem.pw.edu.pl> wrote:
> Hello everyone,
> this my first post to the list, so I would like to give many thanks to the
> authors and all contributors to the great Apache Wicket project. We silently
> develop a medium sized application for over two years (at the Warsaw
> University of Technology), and usually we have resolved all issues by
> searching answers on this users group or by googling them. This time I would
> ask you for consultation.
>
> My goal is to provide a download link for CSV data which will be generated
> dynamically and during the time consuming generation I would like to show a
> user an indicator. Like the one the IndicatingAjaxLink class do.
>
> My questions are:
>
> 1) Is the following source code created the 'wicket way' or I am breaking
> somewhere else opened door?
> The 'trick' I have employed, that I am not sure of, is the redirection to
> the AbstractDefaultAjaxBehaviour in the onClick method of the
> IndicatingAjaxLink.
>
> 2) The problem with this code is that, when I click the download link the
> second time the indicator is not revolving. It is being displayed correctly,
> and hidden on time, and the CSV data is exported correctly. The problem is
> that the indicator is not moving.
>
> Thank you for you assitance in advance,
> Robert Szmurlo
>
> Java:
>
> public class HomePage extends WebPage {
>
>    private AbstractDefaultAjaxBehavior b;
>    private String data = null;
>
>    public HomePage(final PageParameters parameters) {
>
>        final ByteArrayResource bar = new ByteArrayResource("text/csv") {
>            @Override
>            public byte[] getData(Attributes attributes) {
>                byte[] bytes = null;
>                try {
>                    bytes = data.getBytes();
>                } catch (Exception e) {
>                    e.printStackTrace();
>                }
>                return bytes;
>            }
>
>            @Override
>            protected void configureResponse(ResourceResponse
> response,Attributes attributes) {
>                super.configureResponse(response, attributes);
>                response.setFileName("report.csv");
>            }
>
>        };
>
>        add( b = new AbstractDefaultAjaxBehavior() {
>            @Override
>            protected void respond(AjaxRequestTarget target) {
>                getRequestCycle().scheduleRequestHandlerAfterCurrent(new
> ResourceRequestHandler(bar, getPageParameters()));
>            }
>        });
>
>        add( new IndicatingAjaxLink<Void>("link") {
>            @Override
>            public void onClick(AjaxRequestTarget target) {
>
>                prepareData(); // takes some time
>
>                if (target != null) {
> *target.appendJavaScript("window.location='" + b.getCallbackUrl() + "'");*
>                }
>            }
>        });
>    }
>
>    protected void prepareData() {
>        ////////// JUST FOR TEST
>        try {
>            Thread.sleep(2000);
>        } catch (InterruptedException e) {
>            e.printStackTrace();
>        }
>        /////////////////////////
>
>        // atach data?
>        data = "No.;Name\n" +
>               "1.;John\n" +
>               "2.;Mary";
>    }
> }
>
>
> HTML:
> <html>
> <body>
> <a wicket:id="link">Export CSV</a>
> </body>
> </html>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to