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 :

Valeurs null récupérées dans un formulaire JSF


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut Valeurs null récupérées dans un formulaire JSF
    Bonjour et bonne année,

    Je débute avec JavaEE et j'ai un projet à faire pour l'école mais ça fait quelques semaines que je bloque sur un point. J'utilise Maven (pour la première fois ce qui n'arrange pas les choses) et Picketlink. Je ne comprends pas du tout d'où vient le problème.
    J'ai créé un formulaire pour ajouter un nouvel utilisateur, c'est sensé être pas bien compliqué mais je récupère des variables avec comme valeur "null".

    Si je décommente le bout de code lignes 36-40 j'arrive bien à ajouter un utilisateur et sur ma page de login je peux me connecter avec. Donc la partie "inscription fonctionne".
    Si je force des valeurs à mes attributs à une valeur ça s'affiche bien sur ma page, donc l'affichage fonctionne.
    Par élimination c'est la récupération des données qui pose problème.

    Comme je ne comprends rien à la config des divers xml qu'il y a je ne sais pas du tout où chercher.

    Merci d'avance pour toute suggestion ou aide qui me ferait avancer !

    Le code Java
    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
    package fr.monproj.entity;
     
    import javax.annotation.PostConstruct;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.RequestScoped;
    import javax.faces.context.FacesContext;
    import javax.inject.Inject;
    import javax.inject.Named;
     
    import org.picketlink.idm.IdentityManager;
    import org.picketlink.idm.PartitionManager;
    import org.picketlink.idm.credential.Password;
    import org.picketlink.idm.model.basic.User;
     
    @Named
    @RequestScoped
    public class UserRegistration {
     
    	@Inject
    	private PartitionManager partitionManager;
     
    	private IdentityManager identityManager;
     
    	private User user;
     
    	private String password;
     
    	@PostConstruct
    	public void init() {
    		this.user = new User();
    		this.identityManager = partitionManager.createIdentityManager();
    	}
     
    	public void register() {
     
    		/*this.user = new User("bob");
            
    		this.user.setEmail("truc@chose.com");
    		this.user.setFirstName("bob");
    		this.user.setLastName("bob2");*/
     
    		this.identityManager.add(this.user);
     
    		this.identityManager.updateCredential(this.user, new Password(this.password));
     
            FacesMessage message = new FacesMessage("Succès de l'inscription ! " + this.getPassword() + " " + this.user.getEmail() + " " + this.user.getLoginName());
            FacesContext.getCurrentInstance().addMessage( null, message );
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public User getUser(){
    		return this.user;
    	}
     
    	public void setUser(User user){
    		this.user = user;
    	}
    }
    La page xhtml
    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
    <html xmlns="http://www.w3.org/1999/xhtml"
    	  xmlns:ui="http://java.sun.com/jsf/facelets"
    	  xmlns:h="http://java.sun.com/jsf/html">
      <h:body>
        Please, enter your information:<br/><br/>
        <h:form method="POST">
          First Name: <h:inputText value="#{userRegistration.user.firstName}" /><br/>
          Last Name: <h:inputText value="#{userRegistration.user.lastName}" /><br/>
          E-mail: <h:inputText value="#{userRegistration.user.email}" /><br/>
          Username: <h:inputText value="#{userRegistration.user.loginName}" /><br/>
          Password: <h:inputSecret value="#{userRegistration.password}" /><br/>
          <h:commandButton value="Finish" action="#{userRegistration.register()}"/>
     
          <h:messages />
        </h:form>
      </h:body>
    </html>

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour,

    Ton problème viens du fait que tu utilises l'annotation RequestScoped au lieu de ViewScoped !

    RequestScoped : le bean est instancier a chaque requête
    ViewScoped : le bean sera maintenue tant que tu ne changera pas de page
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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
    Il y a un problème de choix, tu utilises de l'injection CDI avec des annotations de scope JSF
    Avec CDI, tu n'as pas le scope "ViewScoped", mais le RequestScoped devrait fonctionner puisque tu as toutes les données dans ta page.
    (je dirais même que vu la nature des données, il est recommandé d'utiliser RequestScoped)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut
    Bonjour,

    merci de vos réponses. J'ai testé en changeant le scope : pas d'amélioration et j'ai aussi testé en virant tout ce qui est injection pour ne laisser que la fonction d'affichage qui récupère les données et les affiche : toujours des valeurs null.

    Par rapport au mélange de jsf et CDI, je me suis basé sur le code ici : http://picketlink.org/gettingstarted/first_cdi_app/
    J'essaye de faire fonctionner l'exemple d'enregistrement de l'utilisateur tout simplement.

  5. #5
    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
    Il devrait fonctionner mais il faut faire attention à l'import quand tu utilises l'annotation RequestScoped

    - import javax.enterprise.context.RequestScoped; (CDI)
    - import javax.faces.bean.RequestScoped; (JSF)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut
    Oui !
    Merci c'était ça, une bien bête erreur.

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

Discussions similaires

  1. [AC-2010] Ne pas afficher les valeurs zéro dans un formulaire
    Par Daejung dans le forum IHM
    Réponses: 6
    Dernier message: 08/07/2015, 20h05
  2. Réponses: 3
    Dernier message: 14/08/2006, 21h27
  3. Réponses: 4
    Dernier message: 12/06/2006, 11h46
  4. Compter nombre d'éléments avec valeur X dans un formulaire
    Par p0Kep0K dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2005, 15h49
  5. Réponses: 2
    Dernier message: 11/12/2004, 21h20

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