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

声明一个新的:

            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 回答
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 回答