Passage d'un paramètre vers un Managed Bean [Résolu]

Bras36 - 12 juin 2013 à 09:17 - Dernière réponse :  Bras36
- 12 juin 2013 à 11:02
Bonjour à tous,

Après quelques jours de recherche, je viens à vous pour demander une petite aide, je pense qu'il doit être simple mais je dois avoir raté quelque chose.... En fait je cherche à passer un paramètre de ma DataTable vers le Managed Bean associé.

C'est le début d'un grand projet, et il me manque cette "technique" pour continuer mon développement...

Pour m'expliquer, j'ai une DataTable avec quelques colonnes, et lorsque je fais le clique sur une colonne j'aurais besoin de passer la valeur de une de ces colonnes ("compte" dans ce cas) vers mon serveur pour effectuer un traitement.

Pour tester mon code j'ai fait un JOptionPane qui doit renvoyer la valeur affectée, mais au lieu de m'envoyer la valeur de la colonne "compte" j'ai comme réponse une valeur qui je pense être l'"Id" de la ligne sélectionnée (quelque chose comme "package.class$objet@183f012").








Liste des OSD's du jour












































Voilà mon Managed Bean:
@ManagedBean
@SessionScoped
public class OsdJourBean implements Serializable {
private static final long serialVersionUID = 3808941745816816737L;
private String selectedCompte;

public String getSelectedCompte(){
return this.selectedCompte;
}

public void setSelectedCompte(String selectedCompte){
this.selectedCompte = selectedCompte;
}

public void testeVoid(SelectEvent event){
JOptionPane.showMessageDialog(null, this.selectedCompte);
}
}


Est-ce que vous pouvez m'aider, svp? Pour ce projet j'utilise JSF 2.1 avec Prime Faces 3.5, tout dans Eclipse...
Je vous remercie d'avance


Marc.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 12 juin 2013 à 10:48
3
Merci
Ok, avec le code complet, je comprend mieux, tu as une liste de OsdJourListItem, l'item séléctionné n'est pas un String mais un OsdJourListItem.

Et quand tu l'affiches, la méthode toString de OsdJourListItem est appelée, si tu ne l'as pas redéfinie, c'est la référence mémoire de cet objet qui est affichée.

Ce qu'il faut que tu fasses dans un premier temps c'est
private OsdJourListItem selectedCompte; 

et modifier les getters et setters en conséquence.

et dans la classe OsdJourListItem tu redéfinis la méthode toString() pour afficher ce que tu veux.

Merci cs_Julien39 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Julien39
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 12 juin 2013 à 10:06
0
Merci
Salut,

value="#{osdJourBean.listeComptes}"

Il faut que dans osdJourBean, tu ais un tableau contenant la liste des comptes à afficher sinon, ca ne peut pas marcher.

Et n'oublis pas les getters et setters sur cet objet.
Commenter la réponse de cs_Julien39
0
Merci
Bonjour Julien,

Merci de votre réponse.

En fait j'ai bien ce ArrayList (avec tous les getters et setters). Comme la DataTable est bien chargé j'ai pensé en les enlever pour ne pas trop "polluer" mon message...

L'application "marche bien", c'est-à-dire, j'ai ma table qu'est chargé et lorsque je clique sur une ligne mon JOptionPane s'affiche, mais au lieu de la valeur de la colonne "compte" (rowKey), j'ai "package.class$objet@183f012" qu'est affiché, en sachant que le code après @ change pour chaque ligne...
Commenter la réponse de Bras36
0
Merci
Voilà le Bean complet:
@ManagedBean
@SessionScoped
public class OsdJourBean implements Serializable {
private static final long serialVersionUID = 3808941745816816737L;

//variables :
private String selectedCompte; 
private ArrayList<OsdJourListItem> listeComptes;

//Get et set des variables :
public String getSelectedCompte(){
return this.selectedCompte;
}
public void setSelectedCompte(String selectedCompte){
this.selectedCompte = selectedCompte;
}

 public ArrayList<OsdJourListItem> getListeComptes() throws SQLException{
return listeComptes;
}

public void setListeComptes(ArrayList<OsdJourListItem> lc){
this.listeComptes = lc;
} 


//contructeur : crée le bean et fait le remplissage des comptes :
public OsdJourBean() throws SQLException{
this.listeComptes = new ArrayList<OsdJourListItem>(); 
remplirComptes();

}

//Fait la remplissage des comptes :
public void remplirComptes() throws SQLException{

ServletContext application = getServletContext();
ListeObjetDAO dao = (ListeObjetDAO) application.getAttribute("ListeObjetDAO");
this.setListeComptes(dao.getListeComptes());
}

//tester la passage du paramètre :
public void testeVoid(SelectEvent event){
JOptionPane.showMessageDialog(null, this.selectedCompte);
}

}
Commenter la réponse de Bras36
cs_Julien39 6450 Messages postés mardi 8 mars 2005Date d'inscriptionModérateurStatut 17 mai 2018 Dernière intervention - 12 juin 2013 à 10:49
0
Merci
Et dans un second temps, si tu en as besoin, je te conseille de te renseigner sur les converters.
Commenter la réponse de cs_Julien39
0
Merci
Merci beaucoup Julien,

Au lieu de redéfinir le toString j'ai utilisé ma méthode getCompte() de OsdJourListItem et ça marche bien

Maintenant je vais pouvoir vraiment avancer dans le projet
Commenter la réponse de Bras36

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.