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 :

[JSF] Problème d'initialisation


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 16
    Points
    16
    Par défaut [JSF] Problème d'initialisation
    J'ai un problème concernant l'initialisation d'une liste. J'ai 2 codes qui me semblent tous 2 cohérents et qui ne se comportent pour autant pas de la même manière.

    Code ok

    JSF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    <h:outputLabel id="typeLabel" for="typeListBox" value="Type"/>
    <h:selectOneMenu id="typeListBox" styleClass="selectOneMenu" value="#{productionProblem.problemType}">
    	<f:selectItems id="typeListBoxValues" value="#{productionProblemValueProvider.problemTypes}"/>
    </h:selectOneMenu>
    ...
    Bean
    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
     
    ...
    public class ProductionProblem extends NamedObject {
    ...
    	/** Type de problème */
    	private ProblemType problemType;
    ...
    	public ProblemType getProblemType() {
    		return problemType;
    	}
     
    	public void setProblemType(ProblemType problemType) {
    		this.problemType = problemType;
    	}
    }
    Je précise que j'ai créé un Converter associé à la classe ProblemType.

    Code ko

    JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:outputLabel id="typeLabel" for="typeListBox" value="Type"/>
    <h:selectOneMenu id="typeListBox" styleClass="selectOneMenu" value="#{productionProblemController.productionProblem.problemType}">
    	<f:selectItems id="typeListBoxValues" value="#{productionProblemValueProvider.problemTypes}"/>
    </h:selectOneMenu>
    Bean
    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
     
    ...
    public class ProductionProblemController implements Serializable {
    ...
    	/** problème de production à traiter */
    	private ProductionProblem productionProblem;
     
    	public ProductionProblem getProductionProblem() {
    		return productionProblem;
    	}
     
    	public void setProductionProblem(ProductionProblem productionProblem){
    		this.productionProblem = productionProblem;
    	}
    }
    Le code de ProductionProblem étant le même.

    Dans ce cas, j'obtiens l'erreur suivante :
    java.lang.IllegalArgumentException: Value is no String

    Y'a t-il un paramétrage supplémentaire à faire lorsqu'on souhaite faire de la binder une propriété d'un Bean elle même Bean ?

    Le problème est-il ailleurs ?

    Merci pour votre aide !

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Je suis parvenu à résoudre mon problème, du moins j'ai une solution (sûrement pas la meilleure, je suis donc ouvert à toute proposition sur le sujet).

    Il semble nécessaire (?) de déclarer non seulement tous les Beans mais aussi toutes les propriétés de type Bean.

    Dans mon cas (fichier faces-config.xml) :
    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
     
    <managed-bean>
    	<managed-bean-name>problemType</managed-bean-name>
    	<managed-bean-class>com.socgen.utils.productionproblem.business.businessObject.ProblemType</managed-bean-class>
    	<managed-bean-scope>request</managed-bean-scope>
    </managed-bean>	
     
    <managed-bean>
    	<managed-bean-name>productionProblem</managed-bean-name>
    	<managed-bean-class>com.socgen.utils.productionproblem.business.businessObject.ProductionProblem</managed-bean-class>
    	<managed-bean-scope>request</managed-bean-scope>
    	<managed-property>
    		<property-name>problemType</property-name>
    		<property-class>com.socgen.utils.productionproblem.business.businessObject.ProblemType</property-class>
    		<value>#{problemType}</value>
    	</managed-property>
    </managed-bean>	
     
    <managed-bean>
    	<managed-bean-name>productionProblemController</managed-bean-name>
    	<managed-bean-class>com.socgen.utils.productionproblem.gui.request.ProductionProblemController</managed-bean-class>
    	<managed-bean-scope>request</managed-bean-scope>
    	<managed-property>
    		<property-name>productionProblem</property-name>
    		<property-class>com.socgen.utils.productionproblem.business.businessObject.ProductionProblem</property-class>
    		<value>#{productionProblem}</value>
    	</managed-property>
    </managed-bean>

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    La déclaration suivant n'est pas nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <managed-bean>
    	<managed-bean-name>problemType</managed-bean-name>
    	<managed-bean-class>com.socgen.utils.productionproblem.business.businessObject.ProblemType</managed-bean-class>
    	<managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    En revanche mon problème reste présent si je tente de faire de l'upload de fichier.

    La propriété de mon bean reste toujours à null.

    JSF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <t:inputFileUpload  id="inputFileUpload0"
    	storage="file"
            styleClass="fileUploadInput"
            required="true"
            value="#{productionProblemController.fileUp}"
            maxlength="200000"/>
    Bean :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class ProductionProblemController implements Serializable {
    	private UploadedFile fileUp; 
    ...
    }
    Quelqu'un connait-il un moyen de faire fonctionner l'upload de fichier ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 31
    Points : 16
    Points
    16
    Par défaut
    Désolé pour le dérangement !

    Une information capitale manquait à la déclaration de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <h:form id="createForm" enctype="multipart/form-data">
    Désolé...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/11/2009, 15h32
  2. Problème d'initialisation de winsock
    Par benjiprog dans le forum C
    Réponses: 6
    Dernier message: 18/12/2005, 10h45
  3. Problème d'initialisation avec GLFW
    Par adrien357 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 23/10/2005, 18h29
  4. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30
  5. Pitié, aidez moi : Problème d'initialisation de postgreSQL
    Par ttalourd dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 16/11/2004, 12h10

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