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?