如果报表中有相同的UUID,该怎么办?

时间:2019-08-23 11:03:14

标签: jasper-reports uuid

在我的碧玉报告中,我使用的是这样的元素:

<textField isStretchWithOverflow="true">
    <reportElement style="alternateStyle" positionType="Float" stretchType="RelativeToTallestObject" x="292" y="0" width="85" height="30" uuid="b93b4e99-d6fb-4679-836d-9b198cb5fe1c"/>
    <textElement textAlignment="Center" verticalAlignment="Middle">
        <font fontName="SMCustomFont" size="9" isBold="false"/>
        <paragraph leftIndent="3"/>
    </textElement>
    <textFieldExpression><![CDATA[($F{SOMEEXP}]]></textFieldExpression>
</textField>

此处的uuid为“ b93b4e99-d6fb-4679-836d-9b198cb5fe1c”。

我的问题是,如果我对同一JRXML文件中的其他textField元素保持相同的UUID,会发生什么?

当我尝试时,报告生成良好。

1 个答案:

答案 0 :(得分:3)

碧玉报告使用引擎中的UUID来标识元素,例如参见SortElementJsonHandler.getCurrentSortField

Jasper社区论坛states的友好用户(员工)

  

UUID通常用于诸如表和交叉表之类的交互元素,以标识要排序/过滤/等的元素。它已在查看器和引擎级别使用,我不确定是否有可用的API可以使用UUID与元素进行交互。

就我所能see而言,在最简单的情况下,例如两个textField,使用相同的UUID是没有问题的,但是如果您拥有更复杂的结果,您可能会得到奇怪的结果具有多个相似组件的设计,它们都具有相同的UUID

使用IDE,您无需担心。

如果您在原始jrxml中复制和粘贴元素/组件,请更改一个数字或删除UUID,当保存在JasperSoft Studio中时,它将自动为您生成(如果不存在)。总的来说,我建议您将IDE用于所有操作(复制和过去操作等),就我个人而言,如果我需要对某些内容进行快速替换,则仅使用code / jrxml视图。