Hi,
Ok I found in wicketstuff, a JRPdfResource class that does the jasper to
pdf conversion for me
and I added code to do this:
InputStream is = getClass().getResourceAsStream("/test.jasper");
JRResource pdfResource = new JRPdfResource(is);
pdfResource.setReportParameters(new HashMap<String, Object>());
add(new ResourceLink("print", pdfResource));
But when I run it I get
org.apache.wicket.util.io.SerializableChecker$WicketNotSerializableException:
Unable to serialize class: java.io.ByteArrayInputStream
Field hierarchy is:
2 [class=com.homeaccount.web.loanoptions.MortgageResultsPage, path=2]
private java.lang.Object org.apache.wicket.MarkupContainer.children
[class=[Ljava.lang.Object;]
private java.lang.Object org.apache.wicket.MarkupContainer.children[8]
[class=org.apache.wicket.markup.html.link.ResourceLink, path=2:print]
private final org.apache.wicket.Resource
org.apache.wicket.markup.html.link.ResourceLink.resource
[class=com.homeaccount.web.jasper.JRPdfResource]
private com.homeaccount.web.jasper.JRResource$JasperReportFactory
com.homeaccount.web.jasper.JRResource.jasperReportFactory
[class=com.homeaccount.web.jasper.JRResource$1]
final java.io.InputStream
com.homeaccount.web.jasper.JRResource$1.val$report
[class=java.io.ByteArrayInputStream] <----- field that is not serializable
at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:349)
at
org.apache.wicket.util.io.SerializableChecker.checkFields(SerializableChecker.java:618)
at
org.apache.wicket.util.io.SerializableChecker.check(SerializableChecker.java:541)
I checked and JRResources implements Serializable, is there a way I can get
Wicket to avoid serializing this?
I was also thinking maybe I could do something like this:
add(new Link("print") {
public void onClick() {
InputStream is =
getClass().getResourceAsStream("/test.jasper");
JRResource pdfStream = new JRPdfResource(is);
pdfStream.setReportParameters(new HashMap<String,
Object>());
getRequestCycle().setRequestTarget(new
ResourceStreamRequestTarget(pdfStream).setFileName("test.pdf"));
}
});
But turns out JRResource extends DynamicWebResource and does not implement
IResourceStream so not sure if this can be made to work...
Thanks, Jason
Pills wrote:
>
> Hi,
>
> look at RequestCycle#setRequestTarget and ResourceStreamRequestTarget
>
>
> novotny wrote:
>> Hi,
>>
>> I'm learning Jasper to create/display a PDF when a link is clicked and
>> the
>> template code I have looks like:
>>
>> ServletOutputStream servletOutputStream = response.getOutputStream();
>> InputStream reportStream =
>> getServletConfig().getServletContext().getResourceAsStream("/reports/FirstReport.jasper");
>>
>> JasperRunManager.runReportToPdfStream(reportStream,
>> servletOutputStream, new HashMap(), new
>> JREmptyDataSource());
>>
>> response.setContentType("application/pdf");
>> servletOutputStream.flush();
>> servletOutputStream.close();
>>
>> How should I acccess the servlet objects, or is there a better way to do
>> this that is the "wicket way(tm)"?
>>
>> Much appreciated, Jason
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
>
--
View this message in context:
http://www.nabble.com/access-ServletOutputStream-in-wicket-tp21487704p21491294.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]