# JasperReport bedingte Anzeige



## Core-Dump (21. März 2009)

Ich möchte in JasperReport Elemente aus einer ArrayList anzeigen, und zwar nur wenn die Arraylist auch entsprechend befüllt ist.
Inder Liste können 0 - 5 Elemente sein.
Ich erhalte jedoch trotz einer 'printWhenExpression' ein IndexOutOfBoundsException.

Scheinbar wird der Ausdruck der dem Textfeld hinterlegt ist also auch ausgewertet, wenn printWhenExpression false zurück gibt.

Im folgenden Beispiel ist materials ein ArrayList welche leer ist.
Die folgende Bedingung sollte ja verhindern, dass auf den Array zugegriffen wird, tuts aber nicht. materials[0].diameter löst dann die IndexOutOfBoundsException aus
Hat mir da jemand ein Tipp wie man das am besten löst?


```
<printWhenExpression><![CDATA[$F{materials}.size() > 0 ? Boolean.TRUE : Boolean.FALSE]]></printWhenExpression>
```


```
<textField isStretchWithOverflow="false" pattern="##0.00" isBlankWhenNull="false" evaluationTime="Column" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="73"
						y="296"
						width="66"
						height="18"
						key="textField-3">
							<printWhenExpression><![CDATA[$F{materials}.size() > 0 ? Boolean.TRUE : Boolean.FALSE]]></printWhenExpression>
						</reportElement>
					<box></box>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.Float"><![CDATA[$F{materials[0].diameter}]]></textFieldExpression>
				</textField>
```


----------

