【问题标题】:How to use jasper parameters in a custom JRDatasource?如何在自定义 JRDatasource 中使用 jasper 参数?
【发布时间】:2021-03-06 13:39:24
【问题描述】:

我正在使用 Jaspersoft Studio 6.11 和 Jasper Server 7.5.0。

我想创建一个使用报表参数的数据源。 我的数据源基于此示例: https://community.jaspersoft.com/wiki/how-create-and-use-jrdatasource-adapter

public class MyImplementation implements JRDataSource {

//This should be initialized from report parameter $P{param}= "Frank,Joseph,Marco,Carl,Lenny,Homer,Teodor,Leopold"
private static String param;   

private static String[] nameArray;

private static final Integer[] ageArray = {50,30,40,46,44,26,32,21};

private int counter = -1;

private HashMap<String, Integer> fieldsNumber = new HashMap<String, Integer>();

private int lastFieldsAdded = 0;

@Override
public boolean next() throws JRException {
    if (counter<nameArray.length-1) {
        counter++;
        return true;
    }
    return false;
}

@Override
public Object getFieldValue(JRField jrField) throws JRException {
    Integer fieldIndex;
    if (fieldsNumber.containsKey(jrField.getName()))
        fieldIndex = fieldsNumber.get(jrField.getName());
    else {
        fieldsNumber.put(jrField.getName(), lastFieldsAdded);
        fieldIndex = lastFieldsAdded;
        lastFieldsAdded ++;
    }
    if (fieldIndex == 0) return nameArray[counter];
    else if (fieldIndex == 1) return ageArray[counter];
    return "";
}


public static JRDataSource getDataSource(){
    nameArray = param.split(",")
    return new MyImplementation();
}
}

String param 应该使用报告参数 $P{param} 值初始化。 怎么做? 如何在自定义数据源中使用报表参数?

【问题讨论】:

    标签: java jasper-reports datasource


    【解决方案1】:

    最常见的方法是创建一个构造函数并在 this 中传递参数。

    首先删除所有 static 修饰符,因为您不需要它们,而且您可以同时从不同线程执行多个报告(即使您当前没有这样做)

    你的构造函数是

    public MyImplementation(String param){
        this.param = param;
    }
    

    当你在 jrxml 中使用它时,你会传递参数

    <dataSourceExpression>
        <![CDATA[new my.package.name.MyImplementation($P{param})]]>
    </dataSourceExpression>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      相关资源
      最近更新 更多