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

Wicket Java Discussion :

Conditionner un affichage


Sujet :

Wicket Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Par défaut Conditionner un affichage
    Bonjour,

    J'ai un problème dans le dèv de mon appli, cela concerne l'affichage d'une Dataview. Je m'explique :
    Mon appli qui fait appel à un WS est chargée de récupérer le contenu d'un bloc de données qui contient une liste de Personne. J'affiche ensuite cette liste dans une Dataview.
    Cette liste peut :
    -contenir 1 ou n personnes -> aucun problème
    -contenir 0 personne -> liste vide j'affiche une Dataview vide, pas de problème
    -être NULL, dans ce cas je ne voudrais pas afficher la Dataview et c'est là que vient ma question car en Java il suffit de faire un test sur la liste et de ne pas créer la Dataview. Mais du côté HTML j'ai un wicket:id pour la Dataview qui ne trouve pas de correspondance côté JAVA.

    Pour remédier à cela, si ma liste est NULL je suis donc obligé de créer une Dataview avec le même wicket:id et de mettre son setVisible à FALSE.

    Cela marche mais c'est vraiment pas joli. N'y aurait-il pas un autre moyen de gérer cette condition, car cela est valable pour plein d'autres choses. Si je veux conditionner un affichage en JAVA je ne peux pas le faire en HTML.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut
    Non, je ne connais pas d'autre moyen car chaque composant HTML doit avoir sa correspondance en Java.

    Passer en setVisible(false) et la solution la plus propre.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Par défaut
    On ne peut pas dire que cela soit très propre, cela revient à initialiser un composant qui nous servira à rien car on va le mettre visible(false).
    Mais bon si c'est la seule solution...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Par défaut
    Et bien il y a plusieurs façons de voir les choses, je pourrais aussi poser une autre question :

    - quelle est la signification d'un Null pour cette liste, et pourquoi faire une distinction avec le cas liste vide ?

    Pourquoi ne pas tout simplement créer une liste vide lorsque le WS renvoie null ? Comme ça pas besoin de setVisible(false)

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Par défaut
    Tout simplement parce qu'on me demande de retranscrire ce que retourne le WS.
    Une liste vide c'est une liste avec aucune occurrence mais c'est une liste quand même donc j'affiche la Dataview.
    En revanche une Liste qui vaut NULL ce n'est pas une liste, donc pas question d'afficher la DataView.

    Merci quand même de ton aide

  6. #6
    Membre émérite

    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    salut

    je voulais creuser le sujet un peu plus avant de répondre (j'ai comme une solution alternative en tete), mais pour l'immédiat voici ce que j'en dirai : ne pas toucher à setVisible, mais surcharger isVisible directement sur la listview.

    c'est en effet la bonne pratique recommandée : comme ça les composants maitrisent leur propre visibilité.

    voila, je regarderai de plus près le problème ce soir

    bonne journée
    joseph

  7. #7
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 63
    Par défaut
    Sur ces précieux conseil j'ai redéfini la méthode isVisible du composant Dataview et j'ai repassé un test avec un liste NULL.
    Et j'ai le message suivant : "argument [list] cannot be null"

    Voici mon code :
    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
    22
    23
    24
    25
    26
     
    public class ResultatBlocPanel extends Panel{
    	public ResultatBlocPanel(String id, Resultat resultatWS) {
    		super(id);
     
    		final List <Personne> listeResultats = resultatWS.getListePersonne();
     
    		final DataView<Personne> dataView = new DataView<Personne>("liste", new ListDataProvider<Personne>(listeResultats)) {
    			public void populateItem(final Item<Personne> item) {
    				item.add(new Label("nom", item.getModelObject.getNom()));
    				item.add(new Label("prenom", item.getModelObject.getPrenom()));
    				item.add(new Label("cp", item.getModelObject.getCodePostal()));
    				item.add(new Label("ville", item.getModelObject.getVille()));
    				item.add(new Label("pays", item.getModelObject.getPays()));
    			}
    			public boolean isVisible(){
    				if(listeResultats != null){
    					return true;
    				}else{
    					return false;
    				}
    			}
    		};
    		add(dataView);
    	}
    }

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

Discussions similaires

  1. Conditionner l'affichage d'un composant MX ?
    Par ttone dans le forum Flex
    Réponses: 2
    Dernier message: 09/12/2008, 10h33
  2. Conditionner l'affichage dune entête d'un état
    Par pasbonte dans le forum IHM
    Réponses: 4
    Dernier message: 02/11/2008, 19h16
  3. Conditionner un affichage
    Par Arnaud Fournery dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/12/2007, 15h59
  4. Réponses: 3
    Dernier message: 16/03/2007, 14h26
  5. Réponses: 17
    Dernier message: 13/07/2006, 00h27

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