1 pièce(s) jointe(s)
[Iterate] rowspan dynamique et taille de Collection
Bonjour,
J'ai une contrainte assez forte sur un tableau dynamique et je ne m'en sort pas. Pourtant je suis persuadé que je ne suis pas loin de la solution.
Contexte :
Une contrainte graphique me force a faire un tableau dynamique de cette forme la (cf piece jointe)
Le code correspondant donne ca :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>Personne</td>
<td>Code</td>
<td>Compétence</td>
<td>Date effet</td>
<td>Date fin</td>
<td> </td>
</tr>
<tr>
<td rowspan="3">XXXX</td>
<td>0001</td>
<td>Libellé 1</td>
<td>01/01/2005</td>
<td>01/01/2005</td>
<td rowspan="3">Lien</td>
</tr>
<tr>
<td>0002</td>
<td>Libellé 2</td>
<td>01/01/2005</td>
<td>01/01/2005</td>
</tr>
<tr>
<td>0003</td>
<td>Libellé 3</td>
<td>01/01/2005</td>
<td>01/01/2005</td>
</tr>
<tr>
<td rowspan="1">YYYY</td>
<td>0001</td>
<td>Libellé 1</td>
<td>01/01/2005</td>
<td>01/01/2005</td>
<td rowspan="1">Lien</td>
</tr>
<tr>
<td rowspan="2">ZZZZ</td>
<td>0003</td>
<td>Libellé 3</td>
<td>01/01/2005</td>
<td>01/01/2005</td>
<td rowspan="2">Lien</td>
</tr>
<tr>
<td>0004</td>
<td>Libellé 4</td>
<td>01/01/2005</td>
<td>01/01/2005</td>
</tr>
</table>
|
Mon probleme est que j'utilise deux types d'objet différents : une Personne et une Compétence.
Ce tableau contient donc une Collection de Personnes qui elle même contient une Collection de Compétence.
Jusque la tout va bien, Je sais faire une Iterate dans un Iterate, mais la ou ca se complique, c'est pour renseigner le nombre qui doit se trouver dans le rowspan et surtout ne mettre le rowspan que la premiere fois.
Voila ce que cela donne pour l'instant (mon problème est en commentaire dans le code):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
<table bgcolor="#00000" cellspacing="1" cellpadding="0" border="0">
<tr bgcolor="#D8D8D8">
<td width="60" align="center">Personne</td>
<td width="80" align="center">Code</td>
<td width="200" align="center">Compétence</td>
<td width="150" align="center"> </td>
</tr>
<logic:present name="${form}" property="personnes">
<logic:iterate id="aPersonne" property="personnes" name="${form}">
<logic:iterate id="comp" property="competences" name="aPersonne">
<tr bgcolor="#D8D8D8">
<!-- Ici j'ai une méthode pour récupérer la taille de la collection -->
<bean:define id="size" property="competencesSize" name="aPersonne"/>
<!-- Ici je ne sais comment renseigner rowspan
Mais je ne sais pas comment ne le déclencher qu'à la premiere Iteration
-->
<td align="center" rowspan="<bean:write property="competencesSize" name="aPersonne"/>"><bean:write property="libelle" name="aPersonne"/></td>
<td width="84" align="center"><bean:write property="code" name="comp"/></td>
<td width="200" align="center"><bean:write property="libelle" name="comp"/></td>
<!-- Même problème qu'avant -->
<td align="center">Lien</td>
</tr>
</logic:iterate>
</logic:iterate>
</logic:present>
</table>
|
Bien sur vous aurez compris que mon but n'est pas de faire du scriptlet.
Merci d'avance pour vos réponses eclairées.