我是JSF的新手,我想将Jasper报告集成到JSF中。我从服务器端生成自定义报告,该报告应该使用JSF组件显示到UI中。 如何做到这一点?您能否提供JSF和Jasper Report Simple Program以及所需的库?JSF和碧玉示例
Q
JSF和碧玉示例
0
A
回答
1
假设您正在讨论JasperReports的HTML报告,最好的办法就是在此阶段忘记JSF位,因为这与JasperReports无关。反过来,JSF也不能对“第三方”HTML做任何明智的事情。只需将HTML 元素添加到JSF页面,该页面的src
指向HttpServlet
实例的URL,该实例根据请求参数或pathinfo返回JasperReports的所需HTML报告,然后您可以使用EL动态传递该报告。例如:
<iframe width="600" height="400" src="reportservlet?id=${bean.someid}"></iframe>
背后的/reportservlet
url-pattern
刚刚调用的JasperReports按照它的文档/教程HttpServlet
,获得它的一个InputStream
,并将其与正确设定的响应头一起写入HttpServletResponse
的OutputStream
,至少Content-Type
是重要的。
0
BalusC建议似乎很好,如果你想要HTML报告。 这里是我的答案,如果你想要任何其他格式(如PDF)
对servlet发出Ajax请求以“准备”报告并将其存储在某处,然后返回新创建的报告的ID。
响应返回成功或失败。在成功的情况下,你弹出一个新窗口,其中一个假想的URL和(使用你的ID)
0
您可以从下载JAR以下链接
http://www.java2s.com/Code/Jar/d/Downloaddynamicreportscore310jar.htm
,或者如果你的PDF文件流吧使用Maven,然后略低于依赖添加到您的pom.xml文件
<dependency>
<groupId>net.sourceforge.dynamicreports</groupId>
<artifactId>dynamicreports-core</artifactId>
<version>3.1.3</version>
</dependency>
XHTML页面
<h:commandLink id="summary_jasper" actionListener="#{workReportBean.prepareJasperReport()}">
<p:graphicImage name="/images/jasper.png" title="Jasper"/>
</h:commandLink>
Managed Bean的 //只需提供DB_NAME,凭证和TABLE_NAME,JASPER报告会为你
public void prepareJasperReport(){
Map<String, String> columnNameNTypeMap = new HashMap<String, String>();
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/DB_NAME", "USER", "PASSWORD");
ResultSet rsColumns = null;
DatabaseMetaData meta = connection.getMetaData();
rsColumns = meta.getColumns(null, null, "TABLE_NAME", null);
while (rsColumns.next()) {
columnNameNTypeMap.put(rsColumns.getString("COLUMN_NAME"), rsColumns.getString("TYPE_NAME"));
}} catch (SQLException e) {
e.printStackTrace();
return;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
// a new report
JasperReportBuilder report = DynamicReports.report();
// populating new report with TABLE object
report.setDataSource("select * from TABLE_NAME;", connection);
// creating COLUMNS // add extra datatypes if your table have ex. long, float etc
for (Map.Entry<String, String> entry : columnNameNTypeMap.entrySet()){
if(entry.getValue().equalsIgnoreCase("int")){
report.columns(Columns.column(entry.getKey(), entry.getKey(), DataTypes.integerType()));
}else if(entry.getValue().equalsIgnoreCase("varchar")){
report.columns(Columns.column(entry.getKey(), entry.getKey(), DataTypes.stringType()));
}else if(entry.getValue().equalsIgnoreCase("bit")){
report.columns(Columns.column(entry.getKey(), entry.getKey(), DataTypes.booleanType()));
}else if(entry.getValue().equalsIgnoreCase("datetime") || entry.getValue().equalsIgnoreCase("date")){
report.columns(Columns.column(entry.getKey(), entry.getKey(), DataTypes.dateType()));
}
}
report.title(Components.text("Summary Report").setHeight(40)
.setStyle(DynamicReports.stl.style()
.setBold(true).setFontSize(16).setForegroundColor(Color.BLUE)
.setAlignment(HorizontalAlignment.CENTER, VerticalAlignment.MIDDLE)));
report.setColumnTitleStyle(DynamicReports.stl.style().setBold(true));
report.setColumnStyle(DynamicReports.stl.style().setHorizontalAlignment(HorizontalAlignment.LEFT));
report.setHighlightDetailEvenRows(true);
report.pageFooter(Components.pageXofY());
try {
// show the report
report.show(false);
// export the report to a pdf file
//report.toPdf(new FileOutputStream("d://report.pdf"));
} catch (DRException e) {
e.printStackTrace();
} /*catch (FileNotFoundException e) {
e.printStackTrace();
}*/
}
创建
相关问题
- 1. 用碧玉和servlet
- 2. 字符串和碧玉
- 3. 碧玉例外occure到SQLServer的2008 R2
- 4. Struts2的标签给碧玉例外
- 5. 碧玉DATE_SUB错误
- 6. 碧玉STRECH报表
- 7. 碧玉报告显示的NetBeans
- 8. 如何将JRXML从旧的碧玉更新为新的碧玉。
- 9. JavaBeans的碧玉的JasperReports的iReport的和
- 10. 如何整合碧玉和gwt?
- 11. IReport和碧玉报告神秘
- 12. Groovy的碧玉插件
- 13. 获取碧玉异常
- 14. 动态碧玉报告
- 15. Rails中集成碧玉3
- 16. 对准碧玉报告
- 17. java的碧玉PARAMS静态
- 18. 多页面碧玉报告
- 19. 动态碧玉OSGi包
- 20. 碧玉子报告错误
- 21. 碧玉报告 - 从报表
- 22. 碧玉:错误的URL
- 23. 碧玉报告HTML组件
- 24. 碧玉异常在JBoss 5.0.1
- 25. 碧玉报告错误
- 26. 如何显示仅使用ireports(碧玉报告)servlet和jsp
- 27. Applet和JSF集成 - 示例
- 28. 动态碧玉:如何使用动态碧玉API添加垂直线
- 29. 碧玉经过格式化的文本字段碧玉改变格式
- 30. 例外:碧玉报告使用Java Web应用程序