2

Map<String, Set<Object>>オブジェクトをパラメータとしてireportに渡します。"Set<Object>"マップのキーがフィールドと等しい場合、カスタム作成されたグループの値を出力したいと思います。

それを行う方法はありますか? 前もって感謝します

HashMap<String,Object> parameters = new HashMap<String,Object>();
parameters.put("PA_CHING",retreivePaChingMapping());

public Map<String, Set<Object>> retreivePaChingMapping() {
        Map<String, Set<Object>> paChing = GenericsUtil.makeMap();
        //adds the object to paChing here 
        return paChing;
    }

IReportの場合:

パラメータ名: PA_CHING

パラメータクラスタイプ: java.util.HashMap

デフォルト値の式:ここに何を入れるべきかわかりません。

ireportのテキストフィールドの表現:

$P{paChing}.containsKey( $F{id} ) ? getChing() : "null";

private void String getChing(){
    StringBuilder ching = new StringBuilder();
    $P{PA_CHInG}.get( $F{id} ).iterator().hasNext()?ching.append($P{PA_CHING}.get( $F{id} ).iterator().next):"";

    return ching;
}
4

3 に答える 3

1

グループの詳細内にサブレポートを配置し、サブレポートのデータソース式で使用します。

new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(new java.util.ArrayList($P{PA_CHING}.get($F{field_where_you_match_the_key})))
于 2013-02-04T07:17:48.997 に答える
0

Set.toString()があなたに代わって行います。

Javadocから

このコレクションの文字列表現を返します。文字列表現は、コレクションの要素のリストで構成され、イテレータによって返される順序で、角かっこ( "[]")で囲まれています。隣接する要素は、文字「、」(コンマとスペース)で区切られます。要素は、String.valueOf(Object)によって文字列に変換されます。

http://docs.oracle.com/javase/6/docs/api/java/util/AbstractCollection.html#toString()

于 2013-02-01T15:06:40.610 に答える
0

新しい宣言:

            Map map=(Map) parameters.get("PA_CHING");
            Set<Object> set= (Set<Object>) map.get("your key name");
            YourClass class = (YourClass) set.iterator().next();
            System.out.println(class.yourMethodName());
     System.out.println(class.yourClassVariables);
于 2013-02-01T16:48:36.940 に答える