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

JSF Java Discussion :

Choix dans un selectItems et modification affichage


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut Choix dans un selectItems et modification affichage
    Bonjour,
    Je débute avec le framework JSF/RichFaces (avant j'utilisais plutôt des frameworks javascript), et je suis confronté à l'affichage d'une photo dans un <h:graphicImage> suite à la sélection d'une valeur dans un <f:selectItems>.

    La page xhtml :
    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
     
    <h:panelGrid columns="2" columnClasses="colLabel, colInput">
    <h:outputText value="Type de photo :(*)" />
        <rich:select onchange="submit()" value="#{beanController.photoDto.typePhoto}"
                          defaultLabel="#{beanController.photoDto.typePhotoList[0].label}">
               <f:valueChangeListener type ="#{com.photo.beanController}"/>
               <f:selectItems value="#{beanController.photoDto.typePhotoList}" />
        </rich:select>
    </h:panelGrid>
     ..............
    .................
    <!-- 2ème partie de la page --> 
     
     <h:panelGrid columns="2" >
           <rich:panel style="text-align: center">
                   <f:facet name="header">Visu type photo</f:facet>
                   <h:graphicImage value="#{beanController.urlPhoto}" />
           </rich:panel>
           <rich:panel style="text-align: center">
                   <f:facet name="header">Descripteur photo</f:facet>
                   <h:inputTextarea id ="descrip" rows="3" value="{beanController.photoDto.description}"/>
            </rich:panel>
    </h:panelGrid>
    La classe Photo :
    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
    public class ModelePhotoDto implements Serializable {
     
        private String typePhoto;
        private List<SelectItem> typePhotoList;
     
        private String description;
     
        public ModelePhotoDto(){
            typePhotoList = new ArrayList<SelectItem>();
            typePhotoList.add( new SelectItem(1, "Paysage"));
            typePhotoList.add(new SelectItem(2, "Portrait"));
            typePhotoList.add(new SelectItem(3, "Techno"));
        }
        // getters et setters
    .......
    Et le bean :
    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
    public class BeanController implements ValueChangeListener {
     
        private PhotoDto photoDto;
        private String urlPhoto;
     
     
        @PostConstruct
        public void init() {
            photoDto = new PhotoDto();
            urlPhoto = "../photos/paysage.jpg";
        }
     
       public void processValueChange(ValueChangeEvent vcEvent){
     
            texte = (String)vcEvent.getNewValue();
            if (texte.equalsIgnoreCase("Paysage") {
    		urlPhoto = "../photos/paysage.jpg";
    	} elseif (texte.equalsIgnoreCase("Portrait") {
    		urlPhoto = "../photos/portrait.jpg";
    	} elseif (texte.equalsIgnoreCase("Techno") {
    		urlPhoto = "../photos/techno.jpg";
    	}
       }
        // getters et setters
    ......
    Je ne vois pas le lien que je dois faire dans la 2éme partie de la page pour récupérer l'image du type de photo choisi au niveau du selectItems : l'événement remonte l'info au niveau du bean : processValueChange, mais comment informer le tag <h:graphicImage> pour indiquer que l'urlPhoto a été modifiée.
    Merci de m'apporter quelques éclaircissements.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 239
    Points : 424
    Points
    424
    Par défaut
    regardes ce sujet
    http://www.developpez.net/forums/d11...4-rich-select/

    ce qui est certain c'est que ajax va actualiser le composant qui a subit la modification

    bon courage ...

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 122
    Points : 82
    Points
    82
    Par défaut
    Merci pour le lien, celà m'a été utile pour clarifier la chose.

    J'ai d'abord essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h:outputText value="Type de photo :(*)" />
    <rich:select value="#{beanController.photoDto.typePhoto}"
            valueChangeListener ="#{beanController.valueChanged}" defaultLabel="#{beanController.photoDto.typePhotoList[0].label}">
                   <f:selectItems value="#{beanController.photoDto.typePhotoList}" />
                   <a4j:ajax event="valueChange" render="images" execute="@this" />
    </rich:select>
    Mais je me retrouve avec l'erreur :
    javax.faces.view.facelets.TagException: /pages/descripteurs.xhtml @35,97 <a4j:ajax> valueChangeevent is not supported for the UISelect
    Donc j'ai viré le <rich:select> et j'ai la solution fonctionnelle avec <h:selectOneMenu>:

    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
     
    <h:outputText value="Type de photo :(*)" />
    <h:selectOneMenu  value="# {beanController.photoDto.typePhoto}" valueChangeListener="#{.beanController.valueChanged}">
          <f:selectItems value="#{beanController.photoDto.typePhotoList}" />
          <a4j:ajax event="valueChange" render="images" execute="@this" />                        
    </h:selectOneMenu>
     
     
    ....................
    <h:panelGrid id="images" columns="2" >
          <rich:panel style="text-align: center">
                <f:facet name="header"> Visu type photo</f:facet>
                 <h:graphicImage value="#{beanController.urlPhoto}" />
          </rich:panel>
    ......
    </h:panelGrid>
    Et pour le controleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
       public void valueChanged(ValueChangeEvent vcEvent){
     
            SelectItem slm = photoDto.getTypePhotoList().get(Integer.parseInt((String)vcEvent.getNewValue()));
            if (slm.getLabel().equalsIgnoreCase("Paysage")){
    		urlPhoto = "../photos/paysage.jpg";
            } elseif (slm.getLabel().equalsIgnoreCase("Portrait") {
     		urlPhoto = "../photos/portrait.jpg";
            } elseif (slm.getLabel().equalsIgnoreCase("Techno") {
    		urlPhoto = "../photos/techno.jpg";
            }
       }
    Si quelqu'un pouvait m'indiquer des liens concernant la description des tags JSF et RichFaces sur le modèle API/Javadoc!
    Je me suis trouvé http://www.horstmann.com/corejsf/jsf-tags.html#Table4_9 mais c'est un peu succint.
    Merci.

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

Discussions similaires

  1. [MySQL] Récupérer choix dans un select pour modification
    Par casimirine dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/07/2013, 14h05
  2. affichage d'un champ avec liste de choix dans un état
    Par DonQuiShoote dans le forum IHM
    Réponses: 16
    Dernier message: 20/05/2007, 23h39
  3. Réponses: 2
    Dernier message: 27/12/2006, 10h44
  4. [MySQL] affichage automatique d'un champs suite à un choix dans une liste déroulante
    Par sanaa.ben dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/10/2006, 00h18
  5. [FORMULAIRE] affichage selon le choix dans une liste déroulante.
    Par gailup dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/06/2006, 14h58

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