Bonjour,

je me permets de vous adresser un problème qui est sans doute complétement trivial. J'utilise une <display:table> pour afficher une liste de beans, ces beans sont des instances de la classe RDV.
Dans une colonne qui affiche des infos sur le patient, je souhaiterais concaténer plusieurs propriétés de ce bean, mais je voudrais que le tri ne se fasse toujours que sur le nom. Pour cela, je dois donc conserver l'attribut property du bean et utiliser un Decorator (car si je ne mets pas de property associée au <display:column> et que j'utilise le corps de la balise, le tri sera affecté). Voici la ligne en question dans le fichier JSP :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<display:column property="nomPatient" title="Patient" sortable="true" decorator="fr.chru.strasbourg.objects.dxp.PatientWrapper" />
A noter que pour se faire j'ai utilisé un id ("row") pour ma table :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<display:table id="row" name="requestScope.rdvList" export="true" sort="list" defaultsort="6">
Ma classe PatientWrapper est très simple, elle utilise "row" comme précisé dans la doc pour accéder aux autres propriétés du bean :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
    public Object decorate(Object columnValue, PageContext pageContext, MediaTypeEnum media) throws DecoratorException
    {
        RDV rdv = (RDV)pageContext.getAttribute("row");
        return columnValue + "/" + rdv.getNomPatient() + " " + rdv.getPrenomPatient() + "<br/>NIP : " + rdv.getNipPatient();
    }
Le problème est le suivant : l'objet RDV retourné par (RDV)pageContext.getAttribute("row") renvoie toujours la première ligne! En pratique mes méthodes getXxx() me renvoient toujours la même chose. Ce qui est étonnant car j'avais fait le test suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
			<display:column property="nomPatient" title="Patient" sortable="true" decorator="fr.chru.strasbourg.objects.dxp.PatientWrapper">
				<%=((RDV)pageContext.getAttribute("row")).getNomPatient()%>
				<%=((RDV)pageContext.getAttribute("row")).getPrenomPatient()%> <br/>
				NIP : <%=((RDV)pageContext.getAttribute("row")).getNipPatient()%>
			</display:column>
et dans ce cas, objet RDV était bien instancié! Mais bien entendu, impossible de faire un tri

En fait que je ne comprends tout simplement pas comment utiliser un Decorator.

Merci d'avance pour votre aide!

Pierre