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 :

Remplacer une image par une autre


Sujet :

Wicket Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut Remplacer une image par une autre
    Bonjour,

    J'ai un lien hypertexte qui s'affiche avec une image par dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="" wicket:id="valider"><img src="..."/></a>
    Je voudrais pouvoir modifier cette image lorsque l'utilisateur clique sur une checkbox. Je ne vois pas du tout comment procéder.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    J'avance un petit peu.

    Je peux maintenant définir dynamiquement la source de l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <img wicket:id="image"/>
     
    Image img = new Image("image", new ContextRelativeResource("path/to/img"));
    add(img)
    Seulement je n'arrive pas à modifier l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img.setImageResource(new ContextRelativeResource("path/to/new/image"));
    img.render();
    Ce code n'a aucun effet.

  3. #3
    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
    rapido sans chercher sur la ML wicket (ce que je t'enjoins à faire !) : tu peux faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img wicket:id="image"/>
    et dans ton code faire (pseudo code encore) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WMC image =new WebMarkupContainer("image");
    image.add(new AttributeModifier("src", true, IModel<String> imageSrcModel);
    A toi de voir comment tu veux fournir ton modèle.

    ++

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Désolé, ton pseudo code est un peu obscure, j'ai encore du mal à maîtriser le système de model.

    Ce que je ne comprends pas, c'est comment je vais pouvoir modifier dynamiquement mon image.

  5. #5
    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
    pour les modèles, as tu lu cet excellent article http://jawher.wordpress.com/i-wrote/...les-de-wicket/ ?

    Quoiqu'il en soit, voici une réponse courte, si cela ne suffit pas je ferai une réponse + longue ce soir :
    en fait, wicket utilise les modèles comme une "indirection" entre l'affichage et les données. Autrement dit, un composant utilise un seul modèle, et pour cela utilise un bête IModel.getObject(). Par contre le modèle peut accéder aux données de différentes façons.

    Dans ton cas, tu as besoin d'un modèle dynamique, qui cherche à chaque fois la bonne valeur. Je te conseille donc le LoadableDetachableModel, via qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IModel<String> imageSrcModel = new LoadableDetachableModel<String>(){
    public String load(){
    return searchForSrc();
    }
    }
    à toi de coder searchForSrc() afin de retourner la bonne source.

    NB : ce modèle appelle la méthode load() une fois par requestCycle seulement. Si tu as besoin que ce soit à chaque getObject, regarde du coté du PropertyModel.

    si ça ne te suffit pas, je te ferai un exemple ce soir

    de façon plus globale, les modèles c'est vraiment tip top une fois assimilés : on peut vraiment tout faire aisément de façon optimale avec. Par contre la prise en main est un peu rude... mais persévérer vaut vraiment le coup !

    ++

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Je vais essayer ça. Mais je ne comprends pas comment je vais forcer l'appel de load().

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

Discussions similaires

  1. [Débutant] Manipulation d'images : intégrer une image dans une image
    Par noscollections dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/10/2014, 11h51
  2. remplacer une image par une autre image
    Par artichaudd dans le forum Langage
    Réponses: 10
    Dernier message: 22/12/2010, 15h00
  3. Remplacer une image par une autre
    Par ingeniomatique dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/08/2010, 10h05
  4. Réponses: 4
    Dernier message: 12/06/2008, 17h00
  5. Afficher / Remplacer une image par une autre
    Par dolf13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2007, 19h52

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