1

私は struts2 jasperreports-plugin を使用しており、アクションを呼び出す HTML レポートを生成しようとしています。

.jasper ファイルはiReportを使用して生成されます。

リストをデータソースとして使用してレポートを正常に生成しましたが、jdbc接続を使用しようとすると問題が発生します。

これは、チュートリアルに従って行ったことです。

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接続を確立し、単純な「選択」クエリでデータを取得しようとしました。

 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」に変更しました。その結果、null 値を持つ行が 1 つだけのレポートが得られます。

また、同じ接続を使用して出力ファイルを生成しようとしました。

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;
    }

アクションを呼び出すと、表示されたレポートにはまだ null 値が含まれていますが、生成された html ファイルには、テーブルに格納されているすべてのデータが含まれています。

私はJasperReportsを初めて使用しましたが、何かが足りないのか、何か間違っているのかわかりません。

助けてくれてありがとう:)

4

1 に答える 1

2

struts2-jasperreports-plugin ドキュメントによると、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

于 2013-06-17T17:17:54.137 に答える