Passage d'un paramètre vers un Managed Bean

Résolu
Bras36 - 12 juin 2013 à 09:17
 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.

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 juin 2013 à 10:48
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.
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 juin 2013 à 10:06
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.
0
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...
0
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);
}

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
12 juin 2013 à 10:49
Et dans un second temps, si tu en as besoin, je te conseille de te renseigner sur les converters.
0
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
0
Rejoignez-nous