JasperReports:将String转换为数组并用它填充List

时间:2013-08-13 11:44:29

标签: list jasper-reports

我拥有的是String [125, 154, 749, 215, 785, 1556, 3214, 7985] (字符串中可以包含1到15个ID的内容,以及它是字符串而不是List的原因,它是通过URL发送的)

我需要用它填充名为campusAndFaculty的List

我使用的是iReport 5.0.0

我已尝试在campusAndFaculty默认值表达式字段

中输入此内容
Array.asList(($P{campusAndFacultyString}.substring( 1, ($P{campusAndFacultyString}.length() -2 ))).split("\\s*,\\s*"))

但它没有填充campusAndFaculty列表

知道如何使用List campusAndFaculty填充String ("campusAndFacultyString")吗?

====================== 更新

我在iReport(5.0.0)中有这些变量

String campusAndFacultyFromBack = "[111, 125, 126, 4587, 1235, 1259]"

String noBrackets = $P{campusAndFacultyFromBack}.substring(1 ($P{campusAndFacultyFromBack}.length() -1 ))

List campusAndFacultyVar = java.util.Arrays.asList(($V{noBrackets}).split("\\s*,\\s*"))

当我打印campusAndFacultyVar时它返回“[111,125,126,4587,1235,1259]”

但是当我在Filter中使用它时,我得到“无法评估以下表达式:org_organisation.org_be_id in null”

1 个答案:

答案 0 :(得分:0)

这对我有用:

String something = "[125, 154, 749, 215, 785, 1556, 3214, 7985]";
Arrays.asList((something.substring(1, (something.length() -1 ))).split("\\s*,\\s*"));

这意味着您可以在 iReport

中执行此操作
java.util.Arrays.asList(($P{campusAndFacultyString}.substring(1, (something.length() -1 ))).split("\\s*,\\s*"));

与您的代码段的区别:

  • 它的数组,不是数组
  • 你应该从长度
  • 取1而不是2
  • 对Arrays类的完全限定引用(根据您的iReport的配置方式,可能会有问题,也可能没关系)