I want to have a link that when hit will download a csv file.  I would
prefer to use a Page or a component that I can use the @SpringBean
notation on so the csv file data can be retrieved via my service layer
beans.

 

I can generate the file using a WebPage with the following in my
constructor for the page where sb is my StringBuilder holding the data.

                                WebResponse response = (WebResponse)
this.getResponse();

                                java.io.OutputStream cout =
response.getOutputStream();

                                try {

 
cout.write(sb.toString().getBytes());

                                                cout.flush();

                                                cout.close();

                                } catch (IOException e) {

                                                // TODO Auto-generated
catch block

                                                e.printStackTrace();

                                }

My page also overrides setHeaders to set the proper headers, ContentType
and Header specifying download and file name.

 

The problem with this is the following 2 errors are thrown:

011-07-13 17:58:23,910 ERROR org.apache.wicket.RequestCycle
RequestCycle:1529 - Markup of type 'html' for component
'com.company.myPage' not found. Enable debug messages for
org.apache.wicket.util.resource to get a list of all filenames tried.:
[Page class = com.company.myPage, id = 4, version = 0]

org.apache.wicket.markup.MarkupNotFoundException: Markup of type 'html'
for component ' com.company.myPage ' not found. Enable debug messages
for org.apache.wicket.util.resource to get a list of all filenames
tried.: [Page class = com.company.myPage, id = 4, version = 0]

 

2011-07-13 17:58:24,549 ERROR
org.apache.wicket.protocol.http.WicketFilter WicketFilter:507 - closing
the buffer error

java.lang.IllegalStateException: getOutputStream() has already been
called for this response

 

 

Any ideas?

 

Reply via email to