IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 2 Java Discussion :

[Display tag] Afficher une colonne en fonction de la valeur d'une autre colonne


Sujet :

Struts 2 Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut [Display tag] Afficher une colonne en fonction de la valeur d'une autre colonne
    Bonjour à tous,


    J'ai un bean contenant une liste d'objets Client, ventilés dans un display:table.

    J'aimerais afficher la première colonne en fonction du statut de chaque élément de ma liste : si client.statut.identifier = 0 je veux afficher une colonne A, sinon je voudrais afficher une colonne B.

    Il semblerait que client.statut.identifier, client. statut et statut ne soient pas reconnus. J'ai essayé d'ajouter un $, un #, un % mais rien n'y fait.

    Savez-vous s'il est au moins possible d'afficher conditionnellement une colonne ?


    Par avance, merci !


    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
    <display:table name="clients" sort="list" defaultsort="2" defaultorder="ascending" partialList="false" size="${size}" pagesize="20" requestURI="" export="false">
    	<s:if test="statut.identifier == 0">
    		<display:column title="" href="Client!action1" paramId="id" paramProperty="id" media="html" headerClass="empty">
    			<img alt="Action 1" title="Action 1" src="<s:url value="/ressources/images/action1.png" />" />
    		</display:column>
    	</s:if>
    	<s:else>
    		<display:column title="" href="Client!action2" paramId="id" paramProperty="id" media="html" headerClass="empty">
    			<img alt="Action 2" title="Action 2" src="<s:url value="/ressources/images/action2.png" />" />
    		</display:column>
    	</s:else>
    	<display:column title="Id" property="id" sortable="true" />
    	<display:column title="Nom du client" property="nom" sortable="true" />
    	<display:column title="Statut" property="statut.libelle" sortable="true" />
    </display:table>

  2. #2
    Membre confirmé

    Inscrit en
    Avril 2005
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 317
    Points : 553
    Points
    553
    Par défaut
    Pour acceder a un élément de ta liste if faut utiliser #attr.client.xxx
    Il faudra auparavant rajouter dans la balise <displaytag... uid="client"...>

    Dans ton cas, cela donnerait quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <display:table name="clients" uid="client" sort="list" defaultsort="2" defaultorder="ascending" partialList="false" size="${size}" pagesize="20" requestURI="" export="false">    
        <display:column title="" href="Client!action1" paramId="id" paramProperty="id" media="html" headerClass="empty">
            <s:if test="#attr.client.statut.identifier == 0">
                <img alt="Action 1" title="Action 1" src="<s:url value="/ressources/images/action1.png" />" />        
            </s:if>
            <s:else>
                <img alt="Action 2" title="Action 2" src="<s:url value="/ressources/images/action2.png" />" />
            </s:else>
        </display:column>
        <display:column title="Id" property="id" sortable="true" />
        <display:column title="Nom du client" property="nom" sortable="true" />
        <display:column title="Statut" property="statut.libelle" sortable="true" />
    </display:table>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 23
    Points : 22
    Points
    22
    Par défaut
    J'ai essayé avec #attr : D'après la TLD, l'attribut test n'accepte aucune expression.

    On a finalement décidé de créer une table dans la BDD contenant les liens vers les images ainsi que les actions à effectuer en fonction du statut.

    Au final, ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <display:table name="clients" uid="client" sort="list" defaultsort="2" defaultorder="ascending" partialList="false" size="${size}" pagesize="20" requestURI="" export="false" id="idTable">    
        <display:column title="" media="html" headerClass="empty">
            <a href="${idTable.statut.href}?id=${idTable.id}">
    		<img alt="${idTable.statut.alt}" title="${idTable.statut.title}" src="${idTable.statut.file}" onclick="this.style.cursor = 'wait';" />
    	</a>
        </display:column>
        <display:column title="Id" property="id" sortable="true" />
        <display:column title="Nom du client" property="nom" sortable="true" />
        <display:column title="Statut" property="statut.libelle" sortable="true" />
    </display:table>

    Merci pour ton aide, ericw78 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2014, 22h48
  2. Réponses: 4
    Dernier message: 01/02/2013, 15h01
  3. [WD-2002] Afficher un champ en fonction de la valeur d'une liste déroulante
    Par babycoca dans le forum Word
    Réponses: 7
    Dernier message: 07/10/2009, 11h03
  4. Réponses: 5
    Dernier message: 07/05/2009, 16h41
  5. Réponses: 12
    Dernier message: 13/02/2007, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo