我是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應用程序