Bonjour,
Pour afficher une liste de données j'utilise displaytag, j'aurais souhaiter savoir s'il était possible de changer la couleur du texte d'une colonne en fonction de la valeur?
Merci d'avance
Bonjour,
Pour afficher une liste de données j'utilise displaytag, j'aurais souhaiter savoir s'il était possible de changer la couleur du texte d'une colonne en fonction de la valeur?
Merci d'avance
Il faut que tu utilises les "Decorators" :
http://displaytag.sourceforge.net/11...ecorators.html
L'exemple est plus parlant, je me suis basé dessus:
http://displaytag.homeip.net/display...e-rowclass.jsp
source de la jsp avec l'utilisation du decorator:
http://displaytag.homeip.net/display...ass.jsp.source
Avec tout ca tu devrais t'en sortir sans probleme sinon fait signe :-)
je n'ai pas la balise <jsp:scriptlet>
Voici le code de ma jsp:
<jsp:useBean id="templateForm" scope="session" class="form.ConsulterListTemplateForm"/>
<c:if test="${!empty templateForm.lstTemplate}">
<c:set scope="request" var="lstTemplate" value="${templateForm.lstTemplate}"/>
<display:table name="lstTemplate" requestURI="consultationListTemplate.do" summary="Liste des models">
<display:column property="name" title="Nom" href="saisieVisualiserTemplate.do" paramId="name" paramProperty="name"/>
<display:column property="template_name" title="Hérite">
<display:column property="command" title="Command" paramId="command" paramProperty="command"/>
</display:table>
</c:if>
Ceci fonctionne mais je voudrais changer la couleur du texte suivant la valeur de command, l'idéal serait de pouvoir écrire quelque chose du type:
<display:column title="Command">
<c:out value="${command}">
</display:column>
mais je n'arrive pas à récupérer la valeur de command, une idée?
Le scriptlet contient la définition du decorator qui va retourner une valeur qui sera la valeur de la css à afficher.
Exemple:
Ensuite tu fais appel à ce decorator dans ton display tag:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <jsp:scriptlet> request.setAttribute("dyndecorator", new org.displaytag.decorator.TableDecorator() { public String addRowClass() { String val = null; if( ((servletGST.domaine.Contrat)getCurrentRowObject()).getEtatIncident() == 3 ){ val = "incidentCritique"; }else if( ((servletGST.domaine.Contrat)getCurrentRowObject()).getEtatIncident() == 2){ val = "incidentMajeur"; }else if( ((servletGST.domaine.Contrat)getCurrentRowObject()).getEtatIncident() == 4){ val = "incidentMineur"; }else if( ((servletGST.domaine.Contrat)getCurrentRowObject()).getEtatIncident() == 1){ val = "attenteValidation"; } return val; } }); </jsp:scriptlet>
Voici ma css qui va reprendre la valeur retourner par le decorator:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <display:table name="listeContratsExpires" class="list" excludedParams="*" defaultsort="4" defaultorder="ascending" requestURI="gst?action=listerContratsExpires" id="listeContratsExpires" export="true" decorator="dyndecorator"> <display:column property="num" href="gst?action=listerIncidents" paramId="idContrat" paramProperty="id" sortable="true" title="N° de contrat" headerClass="sortable" class="statut"/> ... </display:table>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 tr.attenteValidation td.statut { font-weight: bold; background-color: green; } tr.incidentMineur td.statut { font-weight: bold; background-color: yellow; } tr.incidentMajeur td.statut { font-weight: bold; background-color: orange; } tr.incidentCritique td.statut { font-weight: bold; background-color: red; }
a quoi correspond "servletGST.domaine.Contrat" dans la balise <jsp:scriptlet>?
A mes packages, ca cest pour mon cas :-)
package -> servletGST
package -> domaine
Classe -> Contrat
Après je sais pas comment est organisé ton projet :-)
En fait j'envoie "listeContratsExpires" qui est une ArrayList de type " Contrat"
à mon displayTag, et donc sur chaque ligne de ma displayTag j'ai un contrat.
La méthode du decorator getCurrentObject() recupère chaque objet de chaque ligne du displayTag que je cast en Contrat puisque cest des contrat :-) et je recupere la valeur que je veux tester sur cette objet contrat. Ici je recupere 'EtatIncident' et selon sa valeur (3,2,4,1) je retourne un 'val' spécifique (valeur css qui donnera ma couleur en fonction). Cest bon tu piges le systeme ? ou pas ? :-)
de nada :-)
Bonjour à tous,
Je profite de ce post pour demander s'il et possible de changer les couleurs de 2 colonnes en fonction de critères différents.
Il faudrait qu'il y ait en quelque sorte 2 décorateurs ...
Si quelqu'un a déjà fait ça je suis preneur !
D'avance merci !
Arnaud
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager