Hi,
I wrote my own JSF component that can view a report inside a div on a given
page, and also export a report in a number of output formats. I can't really
share the component at this stage, but these snippets should help you get
something up and running. Hopefully in the future I can make my component more
generic and get permission to contribute it in full.
To view the report, firstly I create the JasperPrint object which is the result
of filling the report (JasperFillManager.fillReport()). The following code is
inside my customer JSF component and the context variable you see is the
FacesContext... however the export gets triggered directly from a Seam action,
where you can inject the FacesContext using @In, so you should be able to do
this without having to write a JSF component.
| if (jasperPrint != null) {
| final JRExporter exporter = new JRHtmlExporter();
| exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
| exporter.setParameter(JRExporterParameter.OUTPUT_WRITER,
context.getResponseWriter());
| exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "");
| exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");
|
| // images
| final HttpServletRequest request = (HttpServletRequest)
context.getExternalContext().getRequest();
|
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
| jasperPrint);
| exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, new
HashMap<Object, Object>());
| exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
| request.getContextPath() + "/jasperimg?image=");
|
| // export
| try {
| context.getResponseWriter().write("<div
class=\"reportview\">");
| exporter.exportReport();
| context.getResponseWriter().write("</div>");
| } catch (final JRException e) {
| LOG.error("Report exporting error", e);
| .....
| }
| }
|
To export the report in a whole new response
| final JRExporter exporter =
JRExporterFactory.getExporter(outputType, jasperPrint, context);
| final ByteArrayOutputStream stream = new
ByteArrayOutputStream();
| exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
stream);
|
| // export
| try {
| exporter.exportReport();
| } catch (final JRException e) {
| LOG.error("Report exporting error", e);
| ....
| }
| final HttpServletResponse response =
| (HttpServletResponse)
context.getExternalContext().getResponse();
| try {
| final OutputStream responseStream =
response.getOutputStream();
| response.setContentLength(stream.size());
| response.setContentType(contentTypes.get(outputType));
| if (outputType != ReportOutputType.HTML) {
| response.setHeader("Content-Disposition", "attachment;
filename=report." + outputType);
| }
| responseStream.write(stream.toByteArray());
| responseStream.flush();
| responseStream.close();
| response.flushBuffer();
| } catch (final IOException e) {
| LOG.error(e);
| ....
| }
| context.responseComplete();
|
|
I hope this helps you to get it working,
Daniel.
"d.solasa" wrote : Hi
|
| I struck at the point to generate the jasper reports in seam ,ofcourse in
jboss too.i even used the component that is given in the jboss site (but that
was depricated).And i tried in all the ways that am supposed to generate the
jasper reports in java.May be i think i need a jar file or any other
configuration to generate jaspe reports in seam..
|
| plz be help me..So urgent that i need to implement it in my project
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4047751#4047751
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4047751
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user