gpt4 book ai didi

java - 检查字段值是否在存储为报表参数的列表中

转载 作者:行者123 更新时间:2023-12-02 03:02:23 24 4
gpt4 key购买 nike

我需要使用像in array函数这样的表达式。我在 JasperReports 的报告中有一个数组参数,声明如下 param1 ,它的类是 java.util.List

我想在printwhen表达式中使用表达式。该表达式应该检查该数组中的字段。我尝试了此代码 {IN,$F{query_id},$P{param1}} 但没有用。 $F{query_id} 这是要检查数组的字段。有什么方法可以检查数组中的值吗?

最佳答案

您应该使用 List.contains(Object) 方法。

示例

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="List contains sample" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
<parameter name="list" class="java.util.List">
<defaultValueExpression><![CDATA[Arrays.asList(1, 2, 3)]]></defaultValueExpression>
</parameter>
<parameter name="valueToFind" class="java.lang.Integer">
<defaultValueExpression><![CDATA[5]]></defaultValueExpression>
</parameter>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="180" y="10" width="200" height="30">
<printWhenExpression><![CDATA[$P{list}.contains($P{valueToFind})]]></printWhenExpression>
</reportElement>
<textFieldExpression><![CDATA["I'm visible if value at list"]]></textFieldExpression>
</textField>
</band>
</title>
</jasperReport>

输出结果

如果列表中存在该值(例如,列表 {1, 2, 3} 为 3),则结果将为:

JSS, textField is visible

在其他情况下(在列表中找不到值),Jaspersoft Studio 中的结果将是(textField 被隐藏):

JSS, textField is invisible

在您的情况下,有效表达式将如下所示:

<printWhenExpression><![CDATA[$P{param1}.contains($F{query_id})]]></printWhenExpression>

关于java - 检查字段值是否在存储为报表参数的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com