繁体   English   中英

如何从Java到ireport将2个或更多不同类型的参数传递给jasper?

[英]How to pass 2 or more different type parameters to jasper from java to ireport?

我想使用java.struts2对JasperReports的master_report和subreport使用两个或多个参数。

这是我的代码段:

JasperAction.java:

private String Para_rin;
private String[] Para_rin_sub1;

public String CreateRep_rin() throws Exception {
     try {                      
            param_rin = new HashMap<String, Object>();
            param_rin.put("Para_rin", new Integer(Para_rin)); //  Masterreport's parameter
            param_rin.put("Para_rin_sub1", Para_rin_sub1); //  SubReport's parameter                        
            System.out.println("param_rin"+param_rin);
         } catch (Exception e) {
                    e.printStackTrace();
                    return ERROR;
         }
     return "jasper-rin";
}

master.jrxml:

<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["G:\\pages\\iReport\\"]]></defaultValueExpression>
</parameter>
<parameter name="Para_rin_sub1" class="java.util.List"/>
<parameter name="Para_rin" class="java.lang.Integer"/>
<queryString>
    <![CDATA[select * from iv_raw_in where ID=$P{Para_rin}]]>
</queryString>

subreport.jrxml:

<parameter name="Para_rin_sub1" class="java.util.List">
    <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="Para_rin" class="java.lang.Integer" isForPrompting="false"/>
<queryString>
    <![CDATA[select * from iv_raw_in where $X{IN,ID,Para_rin_sub1}]]>
</queryString>

JSP:

<s:form id="jasper" action="jasper_CreateRep_rin" namespace="/pages/iReport">
  <TABLE id="reptbl" width="350px" border="1">
    <TR>
      <td>
        MasterParam :<s:textfield name="Para_rin" label="Stock" />SubParam :<s:textfield name="Para_rin_sub1" label="sub-Parameters" />

        <s:submit value="Generate Stock Report" type="button" />
      </td>
      <td>
        <s:radio label="format" name="rptFmt" list="#{'html':'HTML','pdf':'PDF'}" value="pdf" />
      </td>
    </TR>
  </TABLE>
</s:form>

现在我遇到了一些错误,例如:

Database Connected
reportName: rep_rin
Format pdf  -- rptFmt  Exception::net.sf.jasperreports.engine.fill.JRExpressionEvalException:       Error evaluating expression : 
Source text : $P{Para_rin_sub1}.toArray()

我该如何完成?

您需要添加subreportParameter在master.jrxml。 查看样本

<subreport>
    <subreportParameter  name="Para_rin_sub1">
        <subreportParameterExpression><![CDATA[$P{Para_rin_sub1}]]></subreportParameterExpression>
    </subreportParameter>
</subreport> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM