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

Seam Java Discussion :

Probleme Seam injection avec @In toujours nulle


Sujet :

Seam Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Probleme Seam injection avec @In toujours nulle
    Bonjour,

    je suis débutant en seam mais je connais toute sa puissance. Je taff sur un projet actuellement et j'ai voulu le passer en Seam. Pour simplifier mon probleme j'ai coder des classes simples. Donc mon probleme justement est que quand j'utilise l'annotation @In pour injecter un composant dans un autre, la valeur de ma propriété injectée est tout le temps nulle ! Voici le code correspondant

    Un formulaire tres simple

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <ui:composition xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:ui="http://java.sun.com/jsf/facelets"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:s="http://jboss.com/products/seam/taglib"
    	xmlns:rich="http://richfaces.org/rich"
    	xmlns:a4j="http://richfaces.org/a4j" template="layout/template.xhtml">
     
    	<ui:define name="titre"></ui:define>
     
    	<ui:define name="body">
    		<rich:panel>
    			<f:facet name="header">
    				<h:outputText value="Creer / Editer un article" />
    			</f:facet>
     
    			<h:form>
     
    				<h:panelGrid columns="2">
    					<h:outputText value="Nom" />
    					<h:inputText value="#{UserBean.user.nom}" />
     
    					<h:outputText value="Prenom" />
    					<h:inputText value="#{UserBean.user.prenom}" />
     
    					<h:commandButton action="#{UserBean.saveUser}" value="Valider" />
    				</h:panelGrid>
     
    				<s:link value="Test" view="/userEdit.xhtml" action="#{Article.test}"/>
    			</h:form>
    		</rich:panel>
     
    	</ui:define>
    </ui:composition>
    Avec le bean UserBean associé

    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
     
    @org.jboss.seam.annotations.Name("UserBean")
    @org.jboss.seam.annotations.Scope(org.jboss.seam.ScopeType.SESSION)
    public class UserBean {
     
    	private User user = new User();
     
    	public User getUser() {
    		return user;
    	}
     
    	public void setUser(User user) {
    		this.user = user;
    	}
     
    	public void saveUser() {
     
    		System.out.println("nom " + user.getNom());
    		System.out.println("prenom " + user.getPrenom());
    	}
    }
    Puis dans un second bean j'injecte le premier afin de récupérer la valeur du User crée

    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
     
    import org.jboss.seam.annotations.In;
     
    @org.jboss.seam.annotations.Name("Article")
    @org.jboss.seam.annotations.Scope(org.jboss.seam.ScopeType.SESSION)
    public class Article {
     
    	@In(create=true, required=false, value="userBean") 
    	private com.eip.funeco.managedbean.UserBean	userBean;
     
    	public void  test() {
     
    		if (null != userBean)
    		{
    			System.out.println("nom " + userBean.getUser().getNom());
    			System.out.println("prenom " + userBean.getUser().getPrenom());
    		}
    		else
    		{
    			System.out.println("mon userBean est null");
    		}
    	}
    }

    Et donc sur la sortie quand je click sur le bouton Valider j'obtiens

    nom Durand
    prenom Henry


    Jusque la ca va, puis quand je click sur le lien Test, il va dans la méthode test(), fait appel au UserBean injecté mais me renvoi sur la sortie :

    mon userBean est null


    Quoique je fasse il est tjrs null! Si j'enleve le required=false il me mets une erreur : @In attribute requires non-null value: Article.userBean"

    Voila désolé pour la longueur du post mais je voulais etre assez clair.
    Merci d'avance pour toutes vos solutions

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    C'est bon en fait, erreur de debutant je suppose le nom de bean injecte doit porter exactement le meme nom que le composant seam

    @org.jboss.seam.annotations.Name("UserBean")

    C'est a dire

    @
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    In(create=true, required=false, value="UserBean") 
    private com.eip.funeco.managedbean.UserBean	UserBean;
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @In(create=true, required=false, value="userBean") 
    	private com.eip.funeco.managedbean.UserBean	userBean;
    Je vais pouvoir avance ;0

  3. #3
    Membre éclairé

    Inscrit en
    Février 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 122
    Points : 659
    Points
    659
    Par défaut
    tu n'as pas besoin de mettre le value

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    En fait, t'as fait le bon truc mais en comprenant mal :

    Ce que tu met dans value, c'est ton @name !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @Name("toto")
    public class Lalala {
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @In (value = "toto")
    private Lalala lilili;
    ça, ça va marcher.

    Tu n'as pas besoin du value lorsque ton nom de variable est le même que ton @Name.

    ps : private User User; je sais même pas si ça compile, mais même dans ce cas, je tombe sur un code comme ça je vire le responsable : c'est illisible.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  5. #5
    Membre éclairé

    Inscrit en
    Février 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 122
    Points : 659
    Points
    659
    Par défaut
    Citation Envoyé par Faiche Voir le message
    ps : private User User; je sais même pas si ça compile, mais même dans ce cas, je tombe sur un code comme ça je vire le responsable : c'est illisible.
    idem et à mon avis ça compile meme pas.
    Y a des conventions en java c'est pas pour embêter, les noms d'attributs commencent par une minuscule.

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

Discussions similaires

  1. [Core] Problème avec SessionFactory toujours à null
    Par vinou94400 dans le forum Hibernate
    Réponses: 1
    Dernier message: 20/09/2011, 11h03
  2. Probleme avec JFileChooser, file NULL
    Par mugwump dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 08/08/2007, 15h06
  3. probleme avec le layout null
    Par anisj1m dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 16/04/2007, 23h57
  4. Probleme avec un string null
    Par jayjay.f dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 04/04/2007, 21h39
  5. Probleme de requete SQL avec la valeur NULL
    Par samyghan dans le forum Installation
    Réponses: 8
    Dernier message: 12/03/2006, 17h24

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