Bonjour,
J'aimerais savoir comment récupérer un objet d'une liste déroulante en JSF ? Sachant que la liste n'affiche que l'attribut nom d'une liste d'objets.
Merci d'avance pour votre aide.
Bonjour,
J'aimerais savoir comment récupérer un objet d'une liste déroulante en JSF ? Sachant que la liste n'affiche que l'attribut nom d'une liste d'objets.
Merci d'avance pour votre aide.
Bonjour,
Peux-tu préciser ou nous montrer le code ?
Bonjour,
A première vue il faut faire une requête (en passant par ton DAO) avec en paramètre le nom (que je suppose être l'ID) puis tu vas pouvoir afficher ta lise comme d'habitude.
Bonjour,
Comme précisé par @geforce, vous devriez imaginer une méthode dans le fichier "ObjetEnQuestionFacade.java" (ça dépend de la structure de votre projet) du style:
La requête "ObjetEnQuestion.findByName" doit être préalablement ajoutée aux @NamedQuery dans le fichier "ObjetEnQuestion.java" (toujours en fonction de la structure de votre projet):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public ObjetEnQuestion findByName(String nom) { return (ObjetEnQuestion) em.createNamedQuery("ObjetEnQuestion.findByName").setParameter("nom", nom).getSingleResult(); }
Pour récupérer l'id (Integer) de l'objet, vous pourriez le faire comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @NamedQuery(name = "ObjetEnQuestion.findByName", query = "SELECT o FROM ObjetEnQuestion o WHERE o.nom = :nom")
Pour que ça fonctionne il faut prévoir des noms UNIQUE dans la table respective de la base de données.
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 int findIdByName(String nom) { int x = 0; // initialiser x pour ne pas avoir des mauvaises surprises dans le try{} String jpql = "SELECT o.idObjetEnQuestion FROM ObjetEnQuestion o WHERE o.nom LIKE '" + nom + "'"; try { // si le nom de l'objet existe dans la base des données x = (Integer) em.createQuery(jpql).getSingleResult(); } catch (javax.persistence.NoResultException ex) { // si le nom recherché n'existe pas dans la DB x = 0; } finally { // ça va retourner 0 et pas null, évite le plantage de l'application mais il faut toujours tester la valeur de retour return x; } }
Partager