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 :

Créer une liste déroulante en JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Par défaut Créer une liste déroulante en JSF
    Bonjour à tous.
    Je voudrais faire une liste déroulante dynamique dont les données proviennent de la table typeproduit qui est en relation avec la table produit dans la base de données(un produit appartient à un et un seul typeproduit et un typeproduit peut avoir un ou plusieurs produits) afin de m'en servir pour sélectionner un type du produit lors de l'enregistrement d'un produit.

    Voilà le code de mon entité typeproduit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @Entity
    @Table(name = "TypeProduit")
    public class TypeProduit_Entity{
     
    	  @Id
    	  @GeneratedValue(strategy = GenerationType.IDENTITY)
          private Long NumType;
    	  @Column(name = "NomType")
    	  @NotNull(message = "Veuillez saisir un type.")
    	  @Size(min = 2,message = "Le nom d'un type doit avoir au moins 2 caractères.")
          private String nomType;
    Voilà le code de mon entité produit :

    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
     
    @Entity
    @Table(name = "produit")
    public class Produit_Entity implements Serializable{
     
    	private static final long serialVersionUID = 1L;
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name = "NumProduit")
    	private Long numProduit;
    	@Column(name = "NomProduit")
    	private String nomProduit;
    	@Column(name = "PrixUnitaire")
    	private Long prixUnitaire;
     
    /*.....................................................................................................................................................................................................*/
    	@ManyToOne
    	@JoinColumn(name = "NumType")
    	private TypeProduit_Entity typeproduit;
    Voilà mon ManagedBean du typeproduit dans lequel je construis mon SelectItem avec des données provenant de la table typeproduit :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    @ManagedBean
    public class TypeProduit_Managed implements Serializable {
     
    	private static final long serialVersionUID = 1L;
    	private List<TypeProduit_Entity> liste = new ArrayList<TypeProduit_Entity>();
    	private TypeProduit_Entity typeProduit;
    	private Map<Long,String> mapDesTypes = new HashMap<Long,String>();
    	private SelectItem listeSelectItem;
            @EJB
    	private TypeProduit_dao typeProduit_DAO;
     
     
           public TypeProduit_Managed(){
    		typeProduit = new TypeProduit_Entity();
    	}
     
    	public TypeProduit_Entity getTypeProduit() {
    		return typeProduit;
    	}
     
           public List<TypeProduit_Entity> getListe() {
    		return typeProduit_DAO.listeType();
    	}
     
         public Map<Long,String> getMapDesTypes() {
    		for(TypeProduit_Entity tpe : getListe()){
    			mapDesTypes.put(tpe.getNumType(),tpe.getNomType());
    		}
    		return mapDesTypes;
    	}
     
    	public SelectItem getListeSelectItem() {
    		return new SelectItem(getMapDesTypes());
    	}
    Voilà mon ManagedBean du produit :

    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
     
    @ManagedBean
    public class Produit_Managed implements Serializable{
     
    	private static final long serialVersionUID = 1L;
    	private Produit_Entity produit;
    	@EJB
    	private Produit_dao produitDAO;
     
    	public Produit_Entity getProduit() {
    		return produit;
    	}
     
    	public Produit_Managed(){
    		produit = new Produit_Entity();
    	}
    Et enfin voilà comment j'ai défini la liste déroulante dans le xhtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <h:outputLabel for="type">Type du produit : <span class="requis">*</span></h:outputLabel>
    <h:selectOneMenu id="type" maxlength="60" value = "#{produit_Managed.produit.typeproduit.numType}">
    <f:selectItems value = "#{typeProduit_Managed.listeSelectItem}" />
    <f:ajax event="blur" render="typeMessage" />
    </h:selectOneMenu>
    <h:message id="typeMessage" for="type" errorClass="erreur" />
    Ci-dessous le rendu que j'ai :

    Nom : Capture_Liste.PNG
Affichages : 893
Taille : 5,4 Ko

    Comme vous pouvez le voir j'ai un affichage bizarre des données dans la liste déroulante et en plus si je place le curseur dans le champ suivant autrement dit,après la validation par le tag <f:ajax event="blur" render="typeMessage" />
    j'ai cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'null' returned null
    Si quelqu'un sait comment m'y prendre merci de m'orienter.

    N.B : j'ai omis les getters et les setters des entités afin d'aérer le code.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 37
    Par défaut
    bonjour,
    concernant l'affichage "bizarre", il est probable qu'en redéfinissant la méthode toString() dans TypeProduit_Entity ça corrige l'affaire.
    Bon courage

    EDIT : non ça n'a pas l'air d'être ça, dsl lol

  3. #3
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut,
    je ne comprend pas ce que tu veux faire exactement?
    les messages sont la pour être rempli lorsqu´il y'a une erreur.
    Mais la du coup je ne vois pas ce que tu veux faire cela.

    eric

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Par défaut Erreur
    Peux tu détaillé ta stack d'erreur ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/09/2007, 08h56
  2. Réponses: 5
    Dernier message: 16/05/2007, 17h53
  3. Créer une Liste déroulante.
    Par ox@na dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/10/2006, 15h00
  4. [VB6]Créer une liste déroulante dans une dataGrid
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/05/2006, 09h32
  5. Réponses: 3
    Dernier message: 20/02/2006, 18h32

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