当前位置: 首页 > 面试题库 >

如何在iReport中打印另一个列表中包含的字符串列表?

夏俊杰
2023-03-14
问题内容

我正在使用java和iReport(来自jasper)创建一个简单的报告程序,应该以pdf格式创建报告,以显示PC的IP地址,位置,当前是否空闲(由其他系统处理),以及当前附加的项目列表(也在其他位置进行管理)。

我为此使用了iReport,并创建了一个虚拟集合生成类,如下所示:

public class PCReports {

    public static java.util.Collection PC_collection;
    public static java.util.Collection generateCollection() {

        PC_collection = new ArrayList<PCLineDTO>();
        PCLineDTO line = new PCLineDTO();
        line.setIP("192.168.1.1");
        line.setLab("location");
        line.setActive(true);
        line.addProjectName("project1");
        line.addProjectName("project2");
        line.addProjectName("project3");
        PC_collection.add(line);

        line = new PCLineDTO();
        line.setIp("192.168.1.2");
        line.setLab("location2");
        line.setActive(false);
        line.addProjectName("project1");
        line.addProjectName("project2");
        PC_collection.add(line);

        return PC_collection;
    }
}

在这种情况下,实体类为:

public class PCLineDTO {
    private String ip;
    private String lab;
    private Boolean active;
    private ArrayList<String> projects;
}

在Internet上进行了一些搜索之后,我找到了一种使用子报表执行类似 操作的方法。

问题是,我不知道如何打印作为数据源传递到此子报表的字符串的集合。

在我在Internet上找到的示例中,对于主集合中的每个项目,子报表都传递了一个对象集合-每个属性都具有自己的getter方法-而不是像这里那样的字符串集合。在这些情况下,他们通过iReport语法访问了需要使用的值,例如,我无法使用:

$F{project}

由于iReport会寻找它所接收的对象中包含的getProject方法,但是在这种情况下,它是一个简单的String对象(实际上没有getProject方法)。


问题答案:

使用子报表或子数据集。

将子报表传递给集合数据源

JRBeanCollectionDataSource($F{Projects})

然后在新的子报表中完全创建一个名为“ _THIS”的新字段,这意味着传递的集合中的bean与我想要的值相同

有关更多信息,请在此处检查类的源代码:JRAbstractBeanDataSource

注意:JasperReport 3.0.0中提供了此功能,我不确定在以前的版本中是否存在。希望这可以帮助

更新:刚刚检查了SVN,似乎此功能已在JasperReports 2.0.0中实现



 类似资料:
  • 问题内容: 我有一个清单: 并要搜索包含字符串的项目。我怎样才能做到这一点? 会检查是否’abc’存在在列表中,但它的一部分和对自己不存在。那么,如何获得包含的所有物品? 问题答案: 如果你只想检查列表中是否存在任何字符串,则可以尝试 如果你确实要获取包含的所有项目abc,请使用

  • 问题内容: 我有一个清单: 并要搜索包含字符串“ abc”和“ def”(以及其他错误的字符串)的项目。我怎样才能做到这一点? 这里几乎是同样的问题。 问题答案: 如果只需要测试,请将目标列表连接到字符串中,然后像这样测试每个元素: 从您的问题中,您可以通过以下方式将每个元素作为子字符串相对于另一个元素的子字符串进行测试: 它非常快(与其他方法之一相比): 从您的评论中,您可以找到不匹配的元素:

  • 当我试图将从表t_comment_photo查询的userPhoto映射到java类ToyComment中的列表元素时,我得到了错误。 我试图修复的resultMap是: 我尝试了和,但都不起作用。 怎么把它修好?

  • 我正在做一个有趣的小问题,是一个朋友寄给我的。这个问题要求我使用文本文件中的常用词填充数组,然后打印此列表中包含用户提供的某些字符的所有词。我能够填充我的数组没有问题,但是代码中实际比较两个列表的部分似乎不起作用。下面是我编写的用于比较这两个列表的函数。 代码运行得很好,我没有得到任何错误输出,但是一旦用户输入了他们的字母列表,就什么也没有发生。为了测试,我尝试了一些与我知道的单词列表中的单词相匹

  • 问题内容: 我有一个产品ID列表,我想找出哪些订单包含所有这些产品。订单表的结构如下: 显然,我可以使用PHP中的一些循环来做到这一点,但是我想知道是否有一种优雅的方法可以完全在mysql中完成。我理想的幻想查询将是这样的: 有希望还是我应该去阅读托尔金?:)另外,出于好奇,如果不能在mysql中使用,是否还有其他具有此功能的数据库? 问题答案: 你很亲密 关于关系代数中的“出于好奇”问题,这可以

  • 此函数接收字符串文本,并返回一个包含字符串列表的列表,字符串文本中的每个句子都有一个列表。 句子由一个字符串“.”分隔, "?",或者“!”.我们忽略了其他标点分隔句子的可能性。所以‘X先生’会变成2句,‘不要’是两个字。 例如,文本是 函数返回: 最令人困惑的部分是如何使函数检测字符?以及如何使其成为每个句子中包含单词的列表。非常感谢。