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 :

affectation d'une valeur à l'attribut d'une liste


Sujet :

JSF Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Windev
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Windev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Points : 27
    Points
    27
    Par défaut affectation d'une valeur à l'attribut d'une liste
    Bonjour,

    Je génère grâce à une méthode un <rich:panelBar> contenant autant de <rich:panelBarItem> que l'utilisateur en demande.

    La génération se passe bien et tout s'affiche correctement.

    Chaque panelBarItem contient un inputText et un inputTextArea. Leur valeurs est affectée par une EL qui correspond à l'attribut d'une variable contenu dans une list.

    Quand l'utilisateur a fini d'encoder les informations, il clic sur enregistrer.
    Ce bouton lance la méthode enregistrer qui envoie ma liste à un autre bean (DossierBean) qui stocke ma liste. Pour être sur qu'il stocke bien les valeurs entrées par l'utilisateur, je fais une petite boucle qui parcours la liste et qui m'affiche dans la console les valeurs de mon acteur.

    Lors du passage dans la boucle, les donnée du premier panelBarItem sont bien enregistrée dans la liste mais les données des autres panelBarItem sont toujours == null. et lorsque je recharge ma page, les données du premier panelBarItem sont bien ré affichée ma pas celle des autres.


    accueil.jsp :
    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
     
    <center><h:form>
    	<h:panelGrid columns="3">
    		<h:outputText value="Nombre d'acteur :" />
    		<h:inputText value="#{acteur.nb}" />
    		<h:commandButton action="#{acteur.createActeur}" value="Générer les acteurs">
    			<a4j:support event="onclick" reRender="barActeurs" />
    		</h:commandButton>
    	</h:panelGrid>
    	<rich:panelBar id="barActeurs" binding="#{acteur.bar}">
    	</rich:panelBar>
    	<h:panelGrid columns="1">
    		<h:commandButton action="#{acteur.enregistrer}" value="Enregistrer les acteurs" />
    	</h:panelGrid>
    </h:form></center>
    ActeurBean.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
    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
     
    public class ActeurBean {
     
    	private List<Acteur> acteurs = new ArrayList<Acteur>();
    	private DossierBean dossier = new DossierBean();
    	private int nb;
    	private String header = "Acteur n° ";
    	private HtmlPanelBar bar;
     
    	public ActeurBean() {
    	}
     
    	public String createActeur() {
    		acteurs.removeAll(getActeurs());
    		bar = new HtmlPanelBar();
    		bar.setRendered(true);
    		populateDynamicBar();
    		return "generer";
    	}
     
    	public String enregistrer() {
    		System.out.println("ENREGISTRER : DEBUT");
    		dossier.addActeur(acteurs);
    		System.out.println("ENREGISTRER : FIN");
    		return "enregistrer";
    	}
     
    	public void populateDynamicBar() {
    		bar.setWidth("850");
    		for (int i = 0; i < nb; i++) {
    			Acteur acteur = new Acteur();
    			acteurs.add(acteur);
     
    			HtmlPanelBarItem barItem = new HtmlPanelBarItem();
    			barItem.setLabel(header + (i + 1));
     
    			HtmlForm form = new HtmlForm();
    			form.setStyleClass("alignCenter");
     
    			HtmlPanelGrid grid = new HtmlPanelGrid();
    			grid.setBorder(0);
    			grid.setColumns(2);
     
    			HtmlOutputText labelName = new HtmlOutputText();
    			labelName.setValue("Nom de l'acteur : ");
     
    			HtmlOutputText labelDescription = new HtmlOutputText();
    			labelDescription.setValue("Description de l'acteur : ");
     
    			HtmlInputText inputText = new HtmlInputText();
    			inputText.setValueExpression("value", createValueExpression("#{acteur.acteurs[" + i + "].name}", String.class));
    			inputText.isRequired();
     
    			HtmlInputTextarea textarea = new HtmlInputTextarea();
    			textarea.setValueExpression("value", createValueExpression("#{acteur.acteurs[" + i + "].description}",String.class));
    			textarea.isRequired();
    			textarea.setCols(100);
    			textarea.setRows(10);
     
    			UIParameter parameter = new UIParameter();
    			parameter.setValue(i);
     
    			grid.getChildren().add(labelName);
    			grid.getChildren().add(inputText);
    			grid.getChildren().add(labelDescription);
    			grid.getChildren().add(textarea);
     
     
    			form.getChildren().add(grid);
     
    			barItem.getChildren().add(form);
    			bar.getChildren().add(barItem);
    		}
    	}
     
    	public List<Acteur> getActeurs() {
    		return acteurs;
    	}
     
    	public void setActeurs(List<Acteur> acteurs) {
    		this.acteurs = acteurs;
    	}
     
    	public DossierBean getDossier() {
    		return dossier;
    	}
     
    	public void setDossier(DossierBean dossier) {
    		this.dossier = dossier;
    	}
     
    	public int getNb() {
    		return nb;
    	}
     
    	public void setNb(int nb) {
    		this.nb = nb;
    	}
     
    	public HtmlPanelBar getBar() {
     
    		return bar;
    	}
     
    	public void setBar(HtmlPanelBar bar) {
    		this.bar = bar;
    	}
     
    	private ValueExpression createValueExpression(String valueExpression, Class<?> valueType) {
    		FacesContext facesContext = FacesContext.getCurrentInstance();
    		return facesContext.getApplication().getExpressionFactory().createValueExpression(facesContext.getELContext(), valueExpression, valueType);
    	}
     
    	private MethodExpression createActionExpression(String actionExpression, Class<?> returnType) {
    		FacesContext facesContext = FacesContext.getCurrentInstance();
    		return facesContext.getApplication().getExpressionFactory().createMethodExpression(facesContext.getELContext(), actionExpression, returnType, new Class[0]);
    	}
     
    }
    DossierBean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void addActeur(List<Acteur> acteurs) {
    	for (Acteur acteur : acteurs) {
    		System.out.println(acteur.toString());
    	}
    	currentDossier.setActeurs(acteurs);
    }
    Résultat console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ENREGISTRER : DEBUT
    Nom : Mathieu	Description : dsfsdfsdfssdf
    Nom : null	        Description : null
    ENREGISTRER : FIN

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Développeur Windev
    Inscrit en
    Février 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Windev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Salut,

    Je pense que je viens de trouver mon erreur. En fait à chaque rich:panelBarItem que je crée je fait un nouveau formaulaire.

    Je viens de le faire sans faire un nouveau formulaire et ça marche.

    Donc pour ceux qui aurais le même problème je pense que en faisant comme ca c'est bon.

    (3 jours pour trouver cette erreur stupide ^^)

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

Discussions similaires

  1. Affecter une valeur d'attribut d'un objet à un autre
    Par wafiwafi dans le forum Général Java
    Réponses: 9
    Dernier message: 19/08/2011, 11h38
  2. Réponses: 3
    Dernier message: 22/08/2010, 17h40
  3. Pb lors de modification de valeur d'attribut d'une classe.
    Par cecileWaseda dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/08/2006, 23h19
  4. [PEAR][HTML_QuickForm] Attribution d'une valeur par défaut à un select
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 24/02/2006, 08h08
  5. Réponses: 4
    Dernier message: 12/10/2005, 13h13

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