【问题标题】:How to pass parameters to a subreport [duplicate]如何将参数传递给子报表[重复]
【发布时间】:2016-08-16 20:29:26
【问题描述】:

我已经创建了主报告,我正在添加一个子报告,它根据documentation 使用“Web 服务数据源”。我正在为以下说明而苦苦挣扎:

在子报表配置(或数据集)中指定不使用任何 完全连接(将连接表达式和 数据源表达式。我们唯一要做的就是通过一些 内部 web 服务数据源工作的强制参数 正确:

  • uriKey
  • authTypeKey
  • authParametersKey
  • 语言键
  • 动词键

我已经映射了主报表和子报表的参数。

uthParametersKeylanguageKeyverbKey 是 java.lang.Object。那么,我应该在“默认值表达式”中写些什么呢?

这是我与参数有关的来源:

<parameter name="authTypeKey" class="java.lang.String">
    <defaultValueExpression><![CDATA["none"]]></defaultValueExpression>
</parameter>
<parameter name="authParametersKey" class="java.lang.Object" isForPrompting="false"/>
<parameter name="languageKey" class="java.lang.Object">
    <defaultValueExpression><![CDATA["xml"]]></defaultValueExpression>
</parameter>
<parameter name="verbKey" class="java.lang.Object">
    <parameterDescription><![CDATA[]]></parameterDescription>
    <defaultValueExpression><![CDATA["get"]]></defaultValueExpression>
</parameter>
<parameter name="Request" class="java.lang.String">
    <defaultValueExpression><![CDATA["<id>12</id>"]]></defaultValueExpression>
</parameter>

【问题讨论】:

  • 默认值表达式,如果不传递参数将具有的值(因此通常仅在调试模式下使用),因此您不需要设置它或者您可以将其设置为在不传递参数的情况下测试您的报告的默认值

标签: java web-services jasper-reports subreport


【解决方案1】:

在 jrxml 代码中将参数传递给子报表的示例:

<subreport>
<reportElement positionType="Float" x="0" y="0" width="555" height="1" isRemoveLineWhenBlank="true"/>
<subreportParameter name="paramInSuberport">
<subreportParameterExpression><![CDATA[$P{param}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[yourDataSource()]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreportFile.jasper"]]></subreportExpression>
</subreport>

【讨论】:

    【解决方案2】:

    那些参数是Strings,不是Objects。此外,由于这些是从主报告中填充的,因此您不需要任何默认值,因为您希望子报告中的主报告中的值。

    编辑

    这些参数是特定类型的对象,不是所有Strings,就像我之前想的那样。来自文档:

    为方便起见,您也可以直接传递整个parametersMap

    所以这也是一种可能的方式。同样,您不需要默认值。

    【讨论】:

    • 恐怕是java.lang.Object。我需要以某种方式通过它们。为简洁起见,我将这些参数检查为“Is For prompting”,但由于 verbKey 和 languageKey 是 java.lang.Object,我无法填写它。如果我像“get”、“xml”(这是我需要传递的内容)这样的默认值,则会发生错误:“...java.lang.String 无法转换为 com.jaspersoft.webservice.data。 enumerations.LanguageType"
    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多