2

我想调用 JasperFillManager.fillReport(filePath+".jasper", param, con); 其中 param 应该接受类型 Map。有什么解决办法


如果您有 aHashMap<String,Integer>并且需要将其转换为 a HashMap<String,Object>,那么以下应该可以工作:

HashMap<String, Object> objParams = new HashMap<String, Object>();
for (String key : intParams.keyValues()) {
    Integer intValue = intParams.get(key);
    objParams.put(key, intValue);
}

intParamsHashMap<String,Integer>.

那里可能有一些错别字,因为这纯粹是即兴表演。

然后你可以通过objParamsto fillReport

4

4 回答 4

2

只需使用将另一个地图作为参数的构造函数:

Map<String, Object> map2 = new HashMap<String, Object>(map);

看这个例子:

import java.util.HashMap;
import java.util.Map;

public class Test5 {

    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        map.put("1", 1);
        Map<String, Object> map2 = new HashMap<String, Object>(map);
        // etc...
    }
}
于 2012-05-03T19:21:58.457 回答
1

如果您有 aHashMap<String,Integer>并且需要将其转换为 a HashMap<String,Object>,那么以下应该可以工作:

HashMap<String, Object> objParams = new HashMap<String, Object>();
for (String key : intParams.keyValues()) {
    Integer intValue = intParams.get(key);
    objParams.put(key, intValue);
}

intParamsHashMap<String,Integer>.

那里可能有一些错别字,因为这纯粹是即兴表演。

然后你可以通过objParamsto fillReport

于 2012-04-30T23:26:46.937 回答
0

如果在 HashMap 中不指定值类型,Java 会隐式地给它一个对象类型。在这种情况下,您只需将原始地图声明为

HashMap objParams = new HashMap();

于 2012-05-01T03:50:30.803 回答
0

你的 .java 文件

String url="jdbc:mysql://127.0.0.1:3306/database";
String username="root";
String password="";
String database="database";

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection(url, username, password);
JasperReport jc=JasperCompileManager.compileReport("F:\\pro\\report.jrxml"); //give your report.jrxml file path

//create hashmap to send data to report.key should same to report parameter
HashMap para = new HashMap();
para .put("name", "chamod");
para .put("email", "chamodck@gmail.com");

JasperPrint print = JasperFillManager.fillReport(jc,para,new JREmptyDataSource());
JasperViewer.viewReport(print);
con.close();

您的 report.jrxml 文件文本字段应该是这样的

<textFieldExpression class="java.lang.String"><![CDATA[$P{name}]]></textFieldExpression>
<textFieldExpression class="java.lang.String"><![CDATA[$P{email}]]></textFieldExpression>
于 2015-12-07T19:31:26.657 回答