Xposé sur Jasper Reports

Éléments et expressions

Tous les attributs déclarés doivent être utilisés dans des expressions. Les expression permettent également de réaliser des opérations entre plusieurs variables. Les expressions représentent la valeur que prend un élément. Nous allons voir tout d'adord ce que sont les éléments.

Les éléments

Les éléments représentent des zones du rapport avec des contraintes particulières correpondant aux différents types d'éléments. Tous les éléments doivent avoir comme caractéristiques les coordonnées et la taille de la zone. Voici un exemple avec un élément staticText:

		<staticText>
			<reportElement
				      mode="Transparent"
				      x="0"
				      y="2"
				      width="178"
				      height="17"
				      forecolor="#000000"
				      backcolor="#FFFFFF"
				      key="staticText"
				      stretchType="NoStretch"
				      positionType="Float"
				      isPrintRepeatedValues="true"
				      isRemoveLineWhenBlank="false"
				      isPrintInFirstWholeBand="false"
				      isPrintWhenDetailOverflows="false"/>
			<box 
				topBorder="None" 
				topBorderColor="#000000" 
				leftBorder="None" 
				leftBorderColor="#000000" 
				rightBorder="None" 
				rightBorderColor="#000000" 
				bottomBorder="None" 
				bottomBorderColor="#000000"/>
			<textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single">
				<font 
					fontName="" 
					pdfFontName="Courier" 
					size="12" 
					isBold="false" 
					isItalic="false" 
					isUnderline="false" 
					isPdfEmbedded ="false" 
					pdfEncoding ="Cp1250" 
					isStrikeThrough="false" />
			</textElement>
			<text><![CDATA[NOM]]></text>
		</staticText>
	

La balise text contient le texte qui sera affiché dans l'élément, il s'agit d'une expression. On peut également effectuer des opérations sur les variables utilisées. Voici un exemple placé en bas de page permettant d'affichier le numéro de page ainsi que le nombre de pages totales du document:

		<textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
			<reportElement
				      mode="Transparent"
				      x="325"
				      y="4"
				      width="174"
				      height="19"
				      forecolor="#000000"
				      backcolor="#FFFFFF"
				      key="textField"
				      stretchType="NoStretch"
				      positionType="FixRelativeToTop"
				      isPrintRepeatedValues="true"
				      isRemoveLineWhenBlank="false"
				      isPrintInFirstWholeBand="false"
				      isPrintWhenDetailOverflows="false"/>
			<box 
				topBorder="None" 
				topBorderColor="#000000" 
				leftBorder="None" 
				leftBorderColor="#000000" 
				rightBorder="None" 
				rightBorderColor="#000000" 
				bottomBorder="None" 
				bottomBorderColor="#000000"/>
			<textElement textAlignment="Right" verticalAlignment="Top" rotation="None" lineSpacing="Single">
				<font 
					fontName="Helvetica" 
					pdfFontName="Helvetica" 
					size="10" isBold="false" 
					isItalic="false" 
					isUnderline="false" 
					isPdfEmbedded ="false" 
					pdfEncoding ="CP1252" 
					isStrikeThrough="false" />
			</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA["Page " + $V{PAGE_NUMBER} + " of "]]></textFieldExpression>
		</textField>
		
		<textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Report" hyperlinkType="None"  hyperlinkTarget="Self" >
			<reportElement
				      mode="Transparent"
				      x="499"
				      y="4"
				      width="36"
				      height="19"
				      forecolor="#000000"
				      backcolor="#FFFFFF"
				      key="textField"
				      stretchType="NoStretch"
				      positionType="FixRelativeToTop"
				      isPrintRepeatedValues="true"
				      isRemoveLineWhenBlank="false"
				      isPrintInFirstWholeBand="false"
				      isPrintWhenDetailOverflows="false"/>
			<box 
				topBorder="None" 
				topBorderColor="#000000" 
				leftBorder="None" 
				leftBorderColor="#000000" 
				rightBorder="None" 
				rightBorderColor="#000000" 
				bottomBorder="None" 
				bottomBorderColor="#000000"/>
			<textElement textAlignment="Left" verticalAlignment="Top" rotation="None" lineSpacing="Single">
				<font 
				fontName="Helvetica" 
				pdfFontName="Helvetica" 
				size="10" isBold="false" 
				isItalic="false" 
				isUnderline="false" 
				isPdfEmbedded ="false" 
				pdfEncoding ="CP1252" 
				isStrikeThrough="false" />
			</textElement>
			<textFieldExpression   class="java.lang.String"><![CDATA["" + $V{PAGE_NUMBER}]]></textFieldExpression>
		</textField>
	

Remarque: On utilise ici deux champs séparés pour afficher la page courante et le nombre total de pages car la variable utilisée est une variable "built-in" nommée PAGE_NUMBER. La différence entre les deux textField se situe dans le paramètre evaluationTime qui est positionné à Now pour la page courante et à Report pour avoir le numéro de la dernière page.

On peut également utiliser des expression Java dans le contenu des expressions. Par exemple pour afficher la date du jour on peut utiliser:

	<textFieldExpression   class="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>