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

Développement Web en Java Discussion :

Probleme avec mon BeanManage


Sujet :

Développement Web en Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut Probleme avec mon BeanManage
    Bonjour a tous,

    Je suis actuellement bloqué suite a un formulaire que j'ai créé
    je ne parviens pas a lier la valeur récupérer a mon beanManage

    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
     
     
     <h:form>
     
                <h:panelGrid columns="2" cellpadding="5">
     
    				<pf:outputLabel for="numero" value="Numero"/>
    				<pf:inputText id="numero" value="#{commmandeMB.cmd.numero}"/>
     
    				<pf:outputLabel for="dateCmd" value="De de commande"/>
    				<pf:inputText id="dateCmd" value="#{commmandeMB.cmd.dateCmd}">
    					<f:convertDateTime pattern="dd-MM-yyyy"/>
    				</pf:inputText>
     
                    <pf:outputLabel for="remise" value="Remise"/>
    				<pf:inputText id="remise" value="#{commmandeMB.cmd.remise}"/>
     
    				<pf:outputLabel for="user" value="Adherent"/>
    				<pf:selectOneMenu  id="user" value="#{commmandeMB.cmd.user}">
     
    							<f:selectItems  value="#{commmandeMB.lstClts}" var="u"
    									itemLabel="#{u.nom}" itemValue="#{u}" />
     
    				</pf:selectOneMenu>
     
     
                    <pf:commandButton action="#{commmandeMB.ajouterCmd()}" value="Valider"/>
     
     
                    </h:panelGrid>
     
                </h:form>

    Le champs qui a pour ID user est doit être lier a l'attribut cmd dans ma classe CommmandeMB


    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
     
    @ManagedBean
    @RequestScoped
    public class CommmandeMB {
    	private Commande cmd = new Commande();
    	private List<UserEntity> lstClts = new ArrayList<UserEntity>();
    	private List<Commande> lstCommandes = new ArrayList<Commande>();
     
     
    	public CommmandeMB() {}
     
    	/**
             * @return the cdm
             */
    	public Commande getCmd() {
    		return cmd;
    	}
     
    	/**
             * @param cdm the cdm to set
             */
    	public void setCmd(Commande cmd) {
    		this.cmd = cmd;
    	}
     
    	/**
             * @return the lstClts
             */
    	public List<UserEntity> getLstClts() {
    		return lstClts;
    	}
     
    	/**
             * @param lstClts the lstClts to set
             */
    	public void setLstClts(List<UserEntity> lstClts) {
    		this.lstClts = lstClts;
    	}
     
    	/**
             * @return the lstCommandes
             */
    	public List<Commande> getLstCommandes() {
    		return lstCommandes;
    	}
     
    	/**
             * @param lstCommandes the lstCommandes to set
             */
    	public void setLstCommandes(List<Commande> lstCommandes) {
    		this.lstCommandes = lstCommandes;
    	}
     
    	public void initLst() {
     
    		lstClts = UserDAO.listUsers(); 
    		lstCommandes =  CommandeDao.listCommandes();
    	}
     
     
     
    	public void createNumeroCommande() {
     
    		Date d = new Date();
    		String num = new SimpleDateFormat("yyMMdd").format(d);
     
    		String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
    	    int charLength = chars.length();
     
    	        StringBuilder  pass = new StringBuilder (charLength);
    	        for (int x = 0; x < 4; x++) {
    	            int i = (int) (Math.random() * charLength);
    	            pass.append(chars.charAt(i));
    	        }
     
    		cmd.setNumero(num+pass.toString());
    		cmd.setRemise("0.0");
     
    	}
     
     
    	 public String ajouterCmd() {
     
     
     
    			System.out.println(cmd);
     
    			System.out.println();
     
    			CommandeDao.ajout(this.cmd);
    			System.out.println("--------FIN------------");
     
    			return "ajoutCmd?faces-redirect=true";
    		}
     
     
     
    }
    Mon objet Commande a un attribut qui est la classe UserEntity et je ne parviens pas lier a mon formulaire.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
     
    @Entity(name="commande")
    @Table(name="commande")
    public class Commande implements Serializable {
     
     
    	private static final long serialVersionUID = 1L;
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name = "id_cmd")
    	private int iCmd;
    	private String numero;
    	@Temporal(TemporalType.DATE )
    	@Column(name = "date_cmd")
    	private Date dateCmd;
    	private String remise;
    	@ManyToOne
    	private UserEntity user;
     
    	public Commande() {
    		super();
    	}
     
    	/**
             * @return the iCmd
             */
    	public int getiCmd() {
    		return iCmd;
    	}
     
    	/**
             * @param iCmd the iCmd to set
             */
    	public void setiCmd(int iCmd) {
    		this.iCmd = iCmd;
    	}
     
    	/**
             * @return the numero
             */
    	public String getNumero() {
    		return numero;
    	}
     
    	/**
             * @param numero the numero to set
             */
    	public void setNumero(String numero) {
    		this.numero = numero;
    	}
     
    	/**
             * @return the dateCmd
             */
    	public Date getDateCmd() {
    		return dateCmd;
    	}
     
    	/**
             * @param dateCmd the dateCmd to set
             */
    	public void setDateCmd(Date dateCmd) {
    		this.dateCmd = dateCmd;
    	}
     
    	/**
             * @return the remise
             */
    	public String getRemise() {
    		return remise;
    	}
     
    	/**
             * @param remise the remise to set
             */
    	public void setRemise(String remise) {
    		this.remise = remise;
    	}
     
    	/**
             * @return the user
             */
    	public UserEntity getUser() {
    		return user;
    	}
     
    	/**
             * @param user the user to set
             */
    	public void setUser(UserEntity user) {
    		this.user = user;
    	}
     
    	@Override
    	public String toString() {
    		return "Commande [iCmd=" + iCmd + ", numero=" + numero + ", dateCmd=" + dateCmd + ", remise=" + remise
    				+ ", user=" + user + "]";
    	}
     
     
     
    }
    Est ce que l'un d'entre vous pourrais m'aider me debloquer svp

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ça ne peut pas fonctionner comme ceci, il ne faut pas oublier que dans la page html qui sera générée, tu n'auras pas un objet représentant user mais une chaîne de caractère qui devrait représenter une clé unique et qui sera la clé de la combobox.
    Ensuite, il faut passer par un Converter pour convertir cet id en objet UserEntity.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ça ne peut pas fonctionner comme ceci, il ne faut pas oublier que dans la page html qui sera générée, tu n'auras pas un objet représentant user mais une chaîne de caractère qui devrait représenter une clé unique et qui sera la clé de la combobox.
    Ensuite, il faut passer par un Converter pour convertir cet id en objet UserEntity.
    Merci de ton retour, j'utilise mon converter je n'ai homis de le mentionner

    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
    36
     
     
    @FacesConverter(forClass = UserEntity.class)
    public class UserConverters implements Converter{
     
    	@Override
    	public Object getAsObject(FacesContext context, UIComponent component, String value) {
    		// TODO Auto-generated method stub
    		if(value != null && value.trim().length() > 0) {
    			try {
    					int i = Integer.valueOf(value);
     
    					UserEntity user = UserDAO.findUser(i);
     
    				return user; 
    			}catch (Exception e) {
    				// TODO: handle exception
    			}
    		}
    		return null;
    	}
     
    	@Override
        public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object object) {
     
        	if (object != null)
        	{	 
        		System.out.println(object.toString());
               //return  String.valueOf(  ((UserEntity) object).getIdUser());
        		 return  ((UserEntity) object).getIdUser().toString();
        	}
        	else
        		return null;
        }
     
    }
    Quand je submit mon formulaire voici ce que contient ma variable cmd
    Commande [iCmd=0, numero=200414G9QT, dateCmd=Wed Dec 11 01:00:00 CET 2019, remise=1.0, user=null]

    Je n'arrive vraiment pas a m'en sortir.

    "Tu n'auras pas un objet représentant user mais une chaîne de caractère qui devrait représenter une clé unique et qui sera la clé de la combobox."
    Je nesuis pas sur d'avoir compris.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je n'utilise pas cette forme de converter, et de ce que j'ai vu sur le net, ça semble ne fonctionner que dans certains cas.

    Passes-tu dans les méthodes quand tu charges ou soumet ta page ?
    Si oui, alors tu dois avoir un problème dans la récupération de l'objet
    Sinon, essaye dans un premier temps d'utiliser le type d'objet dans les signatures des 2 méthodes plutôt qu'Object.
    Si ça ne fonctionne toujours pas, alors je te suggère de passer au plan B et de référencer ton converter dans la ligne <pf.selectOneMenu ... converter="idConverter">
    avec l'annotation suivante dans ta classe Converter @FacesConverter("idConverter")

    Ça, ça fonctionne
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    L'erreur vient de mon converter que j'ai simplifier au maximum.
    Pourtant il ne me renvoit jamais mon objet

    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
     
    @FacesConverter(forClass = UserEntity.class)
    public class UserConverters implements Converter{
     
    	@Override
    	public Object getAsObject(FacesContext context, UIComponent component, String value) {
     
     
     
    				String[] tabStr = value.split("=");
     
    				int i = Integer.parseInt(tabStr[1]);
     
    					UserEntity user = UserDAO.findUser(i);
     
    				return user; 
     
     
    	}
     
    	@Override
        public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object object) {
     
        	if (object != null)
        	{	 
     
        		return object.toString();
        	}
        	else
        		return null;
        }
     
    }
    Voici la fonction toString de ma class UserEntity

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       @Override
        public String toString() {
            return "idUser=" + idUser;
        }
    Si une personne a de quoi m'aider je suis preneur
    merci

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pourquoi tu t'embêtes avec ta méthode toString(), utilise directement l'ID dans l'attribut itemValue, tu n'auras pas besoin de faire de traitement split etc...

    Si je comprends bien, tu passes dans le converter, c'est bien ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pourquoi tu t'embêtes avec ta méthode toString(), utilise directement l'ID, tu n'auras pas besoin de faire de traitement split etc...

    Si je comprends bien, tu passes dans le converter, c'est bien ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Pourquoi tu t'embêtes avec ta méthode toString(), utilise directement l'ID dans l'attribut itemValue, tu n'auras pas besoin de faire de traitement split etc...
    Si je comprends bien, tu passes dans le converter, c'est bien ça ?
    La valeur de l'ID est réccupéré dans l'attribut itemValue via mon objet qui est converti en string.

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je sais bien, il passe par la méthode toString() de l'objet mais bon, ça oblige à faire un split alors qu'on pourrait s'en passer...

    Ceci dit, pour ton problème, je ne sais pas quoi te dire... si tu as une exception : laquelle ? si tu n'as pas d'exception et qu'il passe bien dans le converter, met le programme en debug et regarde ce qui se passe (tu peux également mettre un point d'arrêt dans le setter de User de la classe Commande pour voir quelle valeur est affectée)
    Avec aussi peu de code, on peut difficilement savoir ce qui se passe.... bref, bonne chance.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur JAVA & PHP
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur JAVA & PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Ma class UserConverters a été modifié et fonctionne très bien.
    Merci pour le conseil de passer en mode debug j'ai pas toujours le réflex.
    Le problème ne vient pas de la.
    Je suis encore bloqué je vais passer mon week end dessus j'espère trouver une piste

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

Discussions similaires

  1. probleme avec mon OS
    Par quaresma dans le forum Windows XP
    Réponses: 2
    Dernier message: 11/01/2006, 06h50
  2. Probleme avec mon algorithme de tri
    Par kaygee dans le forum Langage
    Réponses: 6
    Dernier message: 09/01/2006, 21h23
  3. Probleme avec mon professeur
    Par Hamza dans le forum Algorithmes et structures de données
    Réponses: 20
    Dernier message: 16/07/2005, 10h50
  4. [Thread] Probleme avec mon Timer
    Par Nico66 dans le forum EDT/SwingWorker
    Réponses: 10
    Dernier message: 02/06/2005, 17h10

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