Search code examples
jasper-reports

The element position is invalid


I am using iReport 3.7.6.

If you look at the image below, you will see a warning. The warning says: warning the element position is invalid

Element reaches outside list contents height: y = 275, height = 30, list contents height = 30.

<componentElement>
                <reportElement positionType="Float" x="0" y="217" width="555" height="15" />
                <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical" ignoreWidth="false">
                    <datasetRun subDataset="deliverableProductsDataset" >
                        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{deliverableProducts})]]></dataSourceExpression>
                    </datasetRun>
                    <jr:listContents height="30" width="475" >

                            <textField isStretchWithOverflow="true">
                                <reportElement stretchType="RelativeToBandHeight" x="23" y="275" width="257" height="30"/>
                                <box topPadding="5" leftPadding="5" bottomPadding="5" rightPadding="5">
                                    <bottomPen lineWidth="1.0"/>
                                    <rightPen lineWidth="1.0"/>
                                </box>
                                <textElement>
                                    <font fontName="DejaVu Sans"/>
                                </textElement>
                                <textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
                            </textField>

                    </jr:listContents>
                </jr:list>
            </componentElement>

enter image description here


Solution

  • There are two problems with your layout.

    1. Element jr:list has height 15 and both elements jr:listContents and textField have height 30. Either increase jr:list height to 30 (or higher) or decrease jr:listContents and textField heights to 15 (or lower).
    2. The position of the textField element should be relative to jr:list. So, since jr:list has height 15, you can't use y=275.

    Here's a slightly modified version that works. Suit it to your needs:

    <componentElement>
        <reportElement x="0" y="217" width="555" height="30"/>
        <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
            <datasetRun subDataset="dataset1">
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
            </datasetRun>
            <jr:listContents height="30" width="555">
                <textField isStretchWithOverflow="true">
                    <reportElement stretchType="RelativeToBandHeight" x="0" y="0" width="257" height="30"/>
                    <box topPadding="5" leftPadding="5" bottomPadding="5" rightPadding="5">
                        <bottomPen lineWidth="1.0"/>
                        <rightPen lineWidth="1.0"/>
                    </box>
                    <textElement>
                        <font fontName="DejaVu Sans"/>
                    </textElement>
                    <textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
                </textField>
            </jr:listContents>
        </jr:list>
    </componentElement>