0

これは私の最初の質問です!

Struts アクションからレポートに Map をパラメータとして渡そうとしています。jrxmlファイルに渡される reportParameters マップにマップを挿入しました。

私の質問は、このマップをjrxmlファイル内で取得できるかどうかです。

より正確には、次のように宣言します。

<parameter name="reportParams.testMap" class="java.util.Map"/>

そして、私はそれを次のように使いたいです:

<textField>
    <reportElement style="StyleData" x="240" y="0" width="100" height="23"/>
    <textElement textAlignment="Left" verticalAlignment="Top"/>
    <textFieldExpression><![CDATA[testMap.get("AR")]]></textFieldExpression>
</textField>

出来ますか?アプリケーションサーバーのログに次のエラーが記録されるため:

No such property: testMap for class: Blank32A4_1336385977531_38171
Error evaluating expression : Source text : testMap.get("AR")
Error evaluating expression : Source text : testMap.get("AR")

私のアクションクラスは次のようになります。

@Injectable
@Results({
@Result(name = "success", type = "jasper", params={"location",
    "report.jasper",
    "connection", "statsConnection",
    "dataSource", "translations",
    "reportParameters","reportParams",
    "format","PDF"})
})
public class LocalMapStatisticNewAction extends ActionSupport{

    ...

    public String execute() {
            reportParams = new Hashtable<String, Object>();
            testMap = new Hashtable<String, String>();
            testMap.put("AR", "Argentina");
            testMap.put("ES", "Spain");
            reportParams.put("testMap", testMap);

            //Jasper code here
    }

    ...

    public Map<String, Object> getReportParams() {
        return reportParams;
    }
}

どんなヒントでも役に立ちます!

4

1 に答える 1

0

間違った名前でパラメータを参照するのと同じくらい簡単なようです。

testMap.get("AR")

と呼ばれるパラメータがありませんtestMap。と呼ばれるパラメータがありますreportParams.testMap。また、次のようなパラメータを参照する必要があります。

$P{testMap}.get("AR")

パラメータの名前を変更するか、パラメータへの参照の名前を変更すると、問題がないはずです。

于 2012-05-08T16:19:43.347 に答える