我正在使用struts2 jasperreports-plugin,我正在尝试生成一个调用动作的HTML报告。
.jasper文件是使用 iReport 生成的。
我使用List作为数据源成功生成了报告,但是我在尝试使用 jdbc 连接时遇到了一些问题。
这就是我在tutorial之后所做的事。
public class JasperReportAction extends ActionSupport {
private List<User> users;
//getters and setters
public String getTestReport() {
User u1 = new User();
User u2 = new User();
setSomeParameters(u1, u2);
users.add(u1);
users.add(u2);
return SUCCESS;
}
}
这就是我在struts.xml文件中添加的内容:
<package name="jasperreport" namespace="/reports" extends="jasperreports-default">
<action name="myJasperTest" class="[...]JasperReportAction" method="getTestReport">
<result name="success" type="jasper" >
<param name="location">report2.jasper</param>
<param name="dataSource">users</param>
<param name="format">HTML</param>
</result>
</action>
</package>
这很有效。我的报告包含列表中定义的数据。 我尝试修改我的操作以建立 jdbc 连接,使用简单的“select”查询检索数据:
public class JasperReportAction extends ActionSupport {
private java.sql.Connection sqlConnection;
//getters and setters..
public String getTestReport() {
try {
sqlConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "pwd");
}
catch(Exception e) {
return ERROR;
}
return SUCCESS;
}
}
在 struts.xml 中,我将数据源更改为“sqlConnection”。 结果我得到的报告只有一行具有空值。
我还尝试使用相同的连接生成输出文件:
public String getTestReport() {
try {
sqlConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "pwd");
JasperReport report = JasperCompileManager.compileReport("report2.jrxml");
JasperPrint print = JasperFillManager.fillReport(report, new HashMap<String, Object>(), sqlConnection);
JasperExportManager.exportReportToHtmlFile(print, "repo.html");
}
catch(Exception e) {
return ERROR;
}
return SUCCESS;
}
当我调用该操作时,显示的报告仍然包含空值,但生成的html文件包含存储在表中的所有数据。
我是 JasperReports 的新手,我不知道我是在遗漏某些东西还是做错了什么。
提前感谢您的任何帮助:)
答案 0 :(得分:2)
根据struts2-jasperreports-plugin
documentation为了使用JDBC连接,您需要在connection
参数中定义它。
<package name="jasperreport" namespace="/reports" extends="jasperreports-default">
<action name="myJasperTest" class="[...]JasperReportAction" method="getTestReport">
<result name="success" type="jasper" >
<param name="location">report2.jasper</param>
<param name="connection">sqlConnection</param>
<param name="format">HTML</param>
</result>
</action>
</package>
另外,不要忘记为sqlConnection
创建getter / setter。