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 :

problème <rich:panelBar> dynamique


Sujet :

JSF Java

  1. #1
    Membre averti
    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
    Par défaut problème <rich:panelBar> dynamique
    Bonjour,

    J'utilise pour mon projet un <rich:panelBar> et dans chaque <rich:panelBarItem>, se trouve un bouton pour enregistrer ce que l'utilisateur entrer. Jusque la pas de problème ca fonctionne correctement ca enregistre tout.

    Mon problème est que chaque fois que je fais enregistrer, la page est rechargée (normale c'est ce que je lui demande^^), et je reviens au premier <rich:panelBarItem> de la page. Donc je voudrais que qd je clique sur enregistrer, je charge le panel suivant au rechargement de la page.

    J'ai vu dans les propriétés de <rich:panelBar> un attribut selectedPanel mais je ne comprend pas comment je peu l'utiliser.

    Pouriez-vous soit m'expliquer comment utiliser cette attribut soit me donner une autre solution.


    D'avance merci.

  2. #2
    Membre averti
    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
    Par défaut
    J'ai un autre problème dans le même genre que celui si-dessus, je m'explique.

    J'ai un <rich:panelBar> que je doit créer dynamiquement. c'est à dire en fait que j'ai un inputText ou l'utilisateur doit entrer le nombre de personne dont il veut donner les détails. et lorsque qu'il a remplit ce champ, je doit créer dynamiquement les <rich:panelBarItem> (1 par personne en réaliter).

    Donc je me demande comment je peu faire ca.


    D'avance merci.

  3. #3
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Bonjour code
    Bonjour,

    je ne connais pas RichFaces, mais sans exemple, c'est dur de t'aider, à moins d'être capable de faire de l'instropection intellectuel .

    voila voila .

    olivier

  4. #4
    Membre averti
    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
    Par défaut
    Alors pour mon premier problème :

    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
     
    <rich:panelBar width="900">
    	<rich:panelBarItem id="client" headerClass="headerPanelBarItem" label="Gestion du client">
    		<h:form>
    			<h:commandButton value="Enregistrer" action="#{clientBean.enregistrer}" />
    		</h:form>
    	</rich:panelBarItem>
    	<rich:panelBarItem id="scope" label="Scope du projet">
    		<h:form>
    			<h:commandButton value="Enregistrer" action="#{txtDiverBean.enregistrer}">
    				<f:param value="1" binding="#{txtDiverBean.parameter}" />
    			</h:commandButton>
    		</h:form>
    	</rich:panelBarItem>
    	<rich:panelBarItem id="acteur" label="Acteurs">
    		<h:form>	
    		        <h:commandButton value="Enregistrer" action="#{txtDiverBean.enregistrer}">
    				<f:param value="11" binding="#{txtDiverBean.parameter}" />
    			</h:commandButton>		
    		</h:form>	
    	</rich:panelBarItem>
    </rich:panelBar>
    voila donc en gros ce que je voudrais c'est que quand je suis par exemple dans la partie scope et que je fait enregistrer, ca s'enregistre (ca fonctionne déjà) et je passe à la partie suivante donc acteur.



    pour mon deuxième problème :

    dans ma page jsf:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <center><h:form>
    	<h:inputText value="#{txtDiverBean.acteur.nb}" />
    	<h:commandButton action="#{txtDiverBean.genererActeur}" value="Générer acteur" />
    </h:form></center>
     
    // mon rich:panelBar générer dynamiquement
    <rich:panelBar>
    	<rich:panelBarItem></rich:panelBarItem>
    	<rich:panelBarItem></rich:panelBarItem>
    </rich:panelBar>
    dans mon bean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public String genererActeur() {		
            /*
             * Génération de mes rich:panelBarItem
             */
     
    	return "acteur";
    }
    Donc ici je voudrais après que l'utilisateur ai entré le nombre d'acteur qu'il souhaite généré, que l'application génère autant de rich:panelBarItem que l'utilisateur souhaite d'acteur.

  5. #5
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut rendered
    Bonjour,

    Dans JSF/tomahawk j'utilise l'option
    rendered='true' ou false.

    Je pense que tu peux faire la même chose avec RichFaces.
    j'ai trouvé
    http://www.developpez.net/forums/d42...ts-invisibles/

    Pour ton pb 2.

    Tu peux créer des objets JSF à la volée et les ajouter à ta page
    genre http://balusc.blogspot.com/2006/06/u...namicDatatable

    c'est une possibilité à explorer ...

    cordialement olivier

  6. #6
    Membre averti
    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
    Par défaut
    Pour mon problème 2 je pense que effectivement la solution proposée dans le liens que tu as donné va beaucoup m'aider. En tout cas le principe est le bon je pense donc me "suffit" de l'appliquer sur mon panelBar ^^.

    Par contre pour mon premier problème je ne pense pas que la solution que tu m'a donnée soit la bonne à moins que je n'ai vraiment rien compris ^^.


    En tout cas merci je suis déjà très content avec mon 2° problème résolut (enfin presque ^^)

  7. #7
    Membre averti
    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
    Par défaut
    Bon je viens d'essayer la solution proposée pour mon problème 2 mais ca ne marche pas avec ce que j'ai fait.

    ma jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <h:form>
    	<h:outputText value="Nombre d'acteur :" />
    	<h:inputText value="#{txtDiverBean.acteur.nb}" />
    	<h:commandButton action="#{acteur.createActeur}" value="Générer les acteurs">
    		<a4j:support event="onclick" reRender="barActeurs" />
    	</h:commandButton>
     
    	<rich:panelBar id="barActeurs" binding="#{acteur.bar}">
    	</rich:panelBar>
    </h:form>
    mon 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
    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
     
    public class Acteur {
     
    	private int nb;
    	private String header = "Acteur n° ";
    	private HtmlPanelBar bar;
     
    	public Acteur() {
    	}
     
    	public String createActeur() {
    		bar = new HtmlPanelBar();
    		populateDynamicBar();
    		return "generer";
    	}
     
    	public void populateDynamicBar() {
    		bar.setWidth("850");
    		for (int i = 0; i < nb; i++) {
    			HtmlPanelBarItem barItem = new HtmlPanelBarItem();
    			barItem.setLabel(header + (i + 1));
    			HtmlDataTable table = new HtmlDataTable();
     
    			HtmlColumn column1 = new HtmlColumn();
    			HtmlOutputText labelName = new HtmlOutputText();
    			labelName.setValue("Nom de l'acteur : ");
    			column1.getChildren().add(labelName);
    			HtmlOutputText labelDescription = new HtmlOutputText();
    			labelDescription.setValue("Description de l'acteur : ");
    			column1.getChildren().add(labelDescription);
     
    			HtmlColumn column2 = new HtmlColumn();
    			HtmlInputText inputText = new HtmlInputText();
    			inputText.setValueExpression("value", createValueExpression("#{txtDiverBean.currentTxtDiver.name}", string.class));
    			inputText.isRequired();
    			column2.getChildren().add(inputText);
     
    			HtmlInputTextarea textarea = new HtmlInputTextarea();
    			textarea.setValueExpression("value", createValueExpression("#{txtDiverBean.currentTxtDiver.description}", String.class));
    			textarea.isRequired();
    			column2.getChildren().add(textarea);
     
    			HtmlCommandButton button = new HtmlCommandButton();
    			button.setValue("Enregistrer");
    			button.setActionExpression(createActionExpression("#{txtDiverBean.enregistrer}", String.class));
    			column2.getChildren().add(button);
     
    			table.getChildren().add(column1);
    			table.getChildren().add(column2);
     
    			barItem.getChildren().add(table);
    			bar.getChildren().add(barItem);
    		}
    	}
     
    	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]);
    	}
    pourriez-vous me dire ce que j'ai mal fait svp.


    D'avance merci.

  8. #8
    Membre averti
    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
    Par défaut
    Bon alors j'ai trouver pourquoi il ne m'affichais pas mes <rich:panelBarItem> j'avais oublier de définir la règle de navigation pour mon string que je retourne ^^.

    Mais bon il m'affiche bien tous mes <rich:panelBarItem> mais ils sont vide et ca je ne trouve pas pourquoi.


    pourriez-vous me dire pourquoi il reste vide svp.

  9. #9
    Membre averti
    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
    Par défaut
    Bon ben voila j'ai quand même fini par trouver une solution.

    Au lieu d'utiliser un HtmlDataTable, j'utilise un HtmlPanelGrid et la ça marche ça m'affiche tout correctement

    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
     
    public void populateDynamicBar() {
    	bar.setWidth("850");
    	for (int i = 0; i < nb; i++) {
    		HtmlPanelBarItem barItem = new HtmlPanelBarItem();
    		barItem.setLabel(header + (i + 1));
    		barItem.setContentClass("centrer");
    		HtmlForm form = new HtmlForm();
    		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("#{txtDiverBean.currentTxtDiver.name}", String.class));
    		inputText.isRequired();
     
    		HtmlInputTextarea textarea = new HtmlInputTextarea();
    		textarea.setValueExpression("value", createValueExpression("#{txtDiverBean.currentTxtDiver.description}", String.class));
    		textarea.isRequired();
    		textarea.setCols(100);
    		textarea.setRows(10);
     
    		HtmlCommandButton button = new HtmlCommandButton();
    		button.setValue("Enregistrer");
    		button.setActionExpression(createActionExpression("#{txtDiverBean.enregistrer}", String.class));
     
    		grid.getChildren().add(labelName);
    		grid.getChildren().add(inputText);
    		grid.getChildren().add(labelDescription);
    		grid.getChildren().add(textarea);
    		grid.getChildren().add(new HtmlOutputText());
    		grid.getChildren().add(button);
     
    		form.getChildren().add(grid);
     
    		barItem.getChildren().add(form);
    		bar.getChildren().add(barItem);
    	}
    }
    Voila pour ceux qui auraient le même problème j'ai mis ma méthode pour générer le <ric:panelBar> en dynamique. (elle fonctionne correctement)


    Maintenant pour mon premier problème, je cherche toujours une solution qui me permettrais d'afficher le <rich:panelBarItem> suivant quand je clic sur le bouton pour enregistrer celui courant.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/11/2008, 19h51
  2. Problème avec création de fenêtre dynamique
    Par FredericB dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/09/2005, 17h21
  3. Probléme pour mettre un renommer dynamiquement les colonnes
    Par bragon dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h47
  4. problème de destruction de composants dynamique
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 23/08/2005, 10h39
  5. Problèmes avec une TForm créée dynamiquement
    Par Pascal Jankowski dans le forum Composants VCL
    Réponses: 5
    Dernier message: 30/03/2005, 11h55

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