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 :

erreur syntax ou de code


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut erreur syntax ou de code
    je travail avec richfaces et je veux savoir est ce que j'ai la possibilité d'écrire comme ca ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <rich:tab label="Home">
    		<form id="bdForm" method="get" action="">
    		<label for="serieName">Choisir une série : </label>
     
    		<div>
    		<span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
     
     
    		</div>
     
     
     
     
            </rich:tab>
    et si non quel type de correction je dois le fait

    merci d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non. Votre xml est mal formé. Vous devez fermer quelque part votre balise form.

    De plus, vérifiez dans la doc de richfaces, mais je ne suis pas sur que le composant tabbedpane autorise d'être placé en dehors d'un formulaire, hors c'est ce que vous faites.

  3. #3
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Je confirme ce que dit tchize_ :

    http://docs.jboss.org/richfaces/late..._tabPanel.html

    All tabPanels should be wrapped into a form element so as content is correctly submitted inside. If a form is placed into each tab, the Action elements of Tab controls appear to be out of the form and content submission inside the panels could be performed only for Action components inside tabs.
    De plus, utiliser un <form> en HTML "classique", si ce n'est pas interdit du tout, ne permet pas de profiter du contexte JSF au niveau du serveur (récupération des beans, de l'arbre des composants JSF, etc.) (hors bidouilles, bien sûr).
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci pour votre réponse

    je change un peux et voila le nouveau code
    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
     <rich:panel>
    			<h:form id="bdForm" method="get" action="">
     
    		<label for="serieName">Choisir une série : </label>
     
    		<div>
    		<span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
     
     
     
    		</div>
    		</h:form>
     
     
     
              </rich:panel>



    mais le problème qui se pose est au niveau de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
    est ce que avec richfaces on peu faire appel de ce genre

  5. #5
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Encore un détail : <h:form> n'accepte pas les attributs action et method. Les renseigner ne sert donc à rien...

    Sinon, pour ta question, oui il est tout à fait possible d'écrire ça. Rencontres-tu un problème particulier ?

    Quelle version de JSF utilises-tu ? Si tu es en JSF 1.x, est-ce que tu utilises aussi Facelets ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    je travail avec jsf 1.2 et avec facelet

    la partie que j'ai envoyé n'est qu'une partie de mon code

    peut être que je dois donnez le code complet pour qu'on soit dans le bon chemin

    je travail avec un fichier .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
    <bds>
     
     
     
     
     
    <serie name="Comanche" interest="5">
    <bd num="1" title="Red Dust"/>
    <bd num="2" title="Les guerriers du désespoir"/>
    <bd num="3" title="Les loups de Wyoming"/>
    <bd num="4" title="Le ciel est rouge sur Laramie"/>
    <bd num="7" title="Le doigt du diable"/>
    <bd num="8" title="Les shériffs"/>
    <bd num="9" title="Et le diable hurla de joie"/>
    </serie>
     
    <serie name="Seuls" interest="5">
    <bd num="1" title="La Disparition"/>
    <bd num="2" title="Le Maître des couteaux"/>
    <bd num="3" title="Le Clan du requin"/>
    <bd num="4" title="Les Cairns rouges"/>
    <bd num="5" title="Au cœur du maelström"/>
    </serie>
    </bds>


    et le code de ma page .xhtml est :
    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
    <script type="text/javascript">
     
    		var DOMXML = null;
     
    window.onload = function() {
    	DOMImplementation('data.xml', getData);
    }
     
     
    function getData(oData) {
    	DOMXML = oData;
     
     
     
     
     
    	var series = oData.getElementsByTagName("serie");
    	var sorted = [];
     
    	for (var i=0, c=series.length; i<c; i++) {
    		sorted.push([series[i].getAttribute("name"), i]);
    	}
    	sorted.sort();	
     
     
    	var list = "<select name=\"serieName\" id=\"serieName\">\n";
    	for (var i=0, c=sorted.length; i<c; i++) {
    		list += "<option value=\"" + sorted[i][1] + "\">" + sorted[i][0] + "</option>\n";
    	}
     
    	list += "</select>\n";
     
    	document.getElementById("outputListDiv").innerHTML = list;
     
     
     
    }
     
     
    		</script>
     
     
     
     
     
     
     
     
     
     
     
     
    </head>
    <body>
     
     
     <rich:panel>
    			<h:form>
     
    		<label for="serieName">Choisir une série : </label>
     
    		<div>
    		<span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
     
     
     
    		</div>
    		</h:form>
     
     
     
              </rich:panel> 
     
     
     
     
     
    </body>
    </html>

    l'erreur qu'elle m'affiche est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException: Error Parsing /exemple.xhtml: Error Traced[line: 37] Element type "c" must be followed by either attribute specifications, ">" or "/>".

    l'erreur concerne cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i=0, c=series.length; i<c; i++) {
    c pour cela je suis entrain de diviser ce problème en des petit problème

  7. #7
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Ta ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i=0, c=series.length; i<c; i++) {
    est visiblement écrite dans ta page XHTML. Or, le <c va être interprétée comme un début de balise XML. Bah oui, le XHTML c'est du XML

    Donc 2 solutions :

    1. Ecrire "normalement" ton code JavaScript, mais l'externaliser dans un fichier .js

    2. Echapper les < et > dans ton code JavaScript (avec &lt; et &gt;), ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i=0, c=series.length; i &lt; c; i++) {
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    vraiment merci pour votre réponse

    je fait quelque changement
    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
    <script type="text/javascript">
     
    		var DOMXML = null;
     
    window.onload = function() {
    	DOMImplementation('data.xml', getData);
    }
     
     
     
    function getData(oData) {
    	DOMXML = oData;
     
     
     
     
     
    	var series = oData.getElementsByTagName("serie");
    	var sorted = [];
     
    	for (var i=0, c=series.length; i &lt; i++) {
    		sorted.push([series[i].getAttribute("name"), i]);
    	}
    	sorted.sort();	
     
     
    	var list = "&ltselect name=\"serieName\" id=\"serieName\"&gt\n";
    	for (var i=0, c=sorted.length; i &lt; i++) {
    		list += "<option value=\"" + sorted[i][1] + "\">" + sorted[i][0] + "</option>\n";
    	}
     
    	list += "&lt/select&gt\n";
     
    	document.getElementById("outputListDiv").innerHTML = list;
     
     
     
    }
    		</script>
     
     
     
     
     
     
     
     
     
     
     
     
    </head>
    <body>
     
     
     <rich:panel>
    			<h:form>
     
    		<label for="serieName">Choisir une série : </label>
     
    		<div>
    		<span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
     
     
     
    		</div>
    		</h:form>
     
     
     
              </rich:panel> 
     
     
     
     
     
    </body>
    </html>
    il m'affche cette erreur[code]javax.servlet.ServletException: Error Parsing /exemple.xhtml: Error Traced[line: 43] The reference to entity "ltselect" must end with the ';' delimiter.
    [CODE]


    la ligne concernant cette erreur est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var list = "&ltselect name=\"serieName\" id=\"serieName\"&gt\n";
    mais le problème rest meme je fait le changement avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var list = "&ltselect name=\"serieName\" ;id=\"serieName\"&gt\n";


    et si je laisse l'ancien code pour cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	var list = "<select name=\"serieName\" id=\"serieName\">\n";

    il m'affiche comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException: Error Parsing /exemple.xhtml: Error Traced[line: 43] Open quote is expected for attribute "name" associated with an  element type  "select".
    pour la même ligne

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    plusieurs remarques:

    1) reprenez votre code javascript de départ, et mettez le dans une balise CDATA, comme ça il ne sera pas interprété.
    2) vous créez des éléments de formulaire dans votre javascript. On ne peux pas faire ça avec JSF. Tous les éléments de formulaire doivent correspondre à des composant JSF définis dans votre fichier de départ. Apparement vous essayer de remplir un comob avec le contenu d'un xml, faite le directement coté serveur, ce sera plus propre, plus facile à lire et ne nécessitera pas de rendre le xml accessible au client.

  10. #10
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Pour être complémentaire :

    Je disais d'ajouter &lt; et pas &lt ! (le ; à la fin à son importance)
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  11. #11
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci encore une fois pour la réponse

    j'essaye de corriger le code selon vous idée

    le nouveau code
    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
    <script type="text/javascript">
     
    		var DOMXML = null;
     
    window.onload = function() {
    	DOMImplementation('data.xml', getData);
    }
     
     
     
    function getData(oData) {
    	DOMXML = oData;
    	var series = oData.getElementsByTagName("serie");
    	var sorted = [];
     
    	for (var i=0, c=series.length; i &lt; i++) {
    		sorted.push([series[i].getAttribute("name"), i]);
    	}
    	sorted.sort();	
     
     
    	var list = "&lt;select name=\"serieName\" id=\"serieName\">\n";
    	for (var i=0, c=sorted.length; i &lt; i++) {
    		list += "&lt;option value=\"" + sorted[i][1] + "\">" + sorted[i][0] + "&lt;/option>\n";
    	}
     
    	list += "&lt;/select>\n";
     
    	document.getElementById("outputListDiv").innerHTML = list;
     
     
     
    }
     
     
    		</script>
     
     
     
     
     
     
     
     
     
     
     
     
    </head>
    <body>
     
     
     <rich:panel>
    			<h:form>
     
    		<label for="serieName">Choisir une série : </label>
     
    		<div>
    		<span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
     
     
     
    		</div>
    		</h:form>
     
     
     
              </rich:panel> 
     
     
     
     
     
    </body>
    </html>
    mais l'erreur cette fois est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException: Error Parsing /exemple.xhtml: Error Traced[line: 77] Invalid byte 2 of 3-byte UTF-8 sequence.
    l'erreur concerne cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="outputListDiv"><em>Liste des séries non chargée...</em></span>

    pour la réponse de "tchize_ " c 'est vrai que vous avez dis

    en premieu lieu j'essaye avec cette démarche (créer une servlet et cette servlet qui a comme mission de parser le fichier .xml et après envoyer les donnes vers la page web) mais franchement je trouve des problème et aussi je ne trouve pas d'aide pour que j'arrive a résoudre le problème de cette manière

    en tous ca après résoudre le problème avec cette manière (javascript) je suis obligé a le refaire avec votre méthode

    merci d'avance

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    si vous faites du jsf, vous n'avez pas besoin de servlet!! De même que vous ne POUVEZ pas créer de composant au vol en javascript (c'est strictement non supporté). Faites ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form>
     <h:selectOneMenu value="#{monBean.episode}">
      <f:selectItems value="#{monBean.listEpisodes}"/>
     </h:selectOneMenu>
    </h:form>

    et dans le 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
     
    private int episode;
    //+getters/setters à ajouter ;)
    public SelectItem[] getListEpisodes(){
         // parser le xml, la db ou ce que vous voulez pour générer
         // la liste d"objets SelectItem, exemple statique
         return new SelectItem[]{
            new SelectItem(1,"Red Dust"),
            new SelectItem(2, "Les guerriers du désespoir"),
            new SelectItem(3, "Les loups de Wyoming"),
            new SelectItem(4, "Le ciel est rouge sur Laramie"),
            new SelectItem(7, "Le doigt du diable"),
            new SelectItem(8, "Les shériffs"),
            new SelectItem(9, "Et le diable hurla de joie")
         }
    }

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    merci encore une fois pour vos réponses

    j'explique un peu le but final pour mon programme

    pour que je puisse le transformer avec votre manière

    le code suivant je le test avec des page simple .html et non avec des pages web richfaces

    voila le code html
    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
    <fieldset>
    	<legend>Sélection de la série</legend>
    	<form id="bdForm" method="get" action="">
    		<div>
    			<label for="serieName">Choisir une série : </label>
     
    			<!-- On écrira le SELECT dans le SPAN ci-dessous -->
    			<span id="outputListDiv"><em>Liste des séries non chargée...</em></span>
    		</div>
    		<p><input type="button" value="Afficher les BD de cette série" onclick="displayBD();" /></p>
    	</form>
    </fieldset>
     
    <fieldset id="outputBDFieldset">
    	<legend>BD en ma possession</legend>
     
    	<!-- On écrira la TABLE avec la liste des albums dans le DIV ci-dessous -->
    	<div id="outputBDDiv"></div>
    </fieldset>
    le code javscript
    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
    var DOMXML = null;
     
    window.onload = function() {
    	DOMImplementation('data.xml', getData);
    }
     
    function getData(oData) {
    	DOMXML = oData;
     
    	var series = oData.getElementsByTagName("serie");
    	var sorted = [];
     
    	// Classement par ordre alphabétique, via tableau à 2 dimensions
    	for (var i=0, c=series.length; i<c; i++) {
    		sorted.push([series[i].getAttribute("name"), i]);
    	}
    	sorted.sort();	
     
    	// Génération du SELECT
    	var list = "<select name=\"serieName\" id=\"serieName\">\n";
    	for (var i=0, c=sorted.length; i<c; i++) {
    		list += "<option value=\"" + sorted[i][1] + "\">" + sorted[i][0] + "</option>\n";
    	}
     
    	list += "</select>\n";
     
    	document.getElementById("outputListDiv").innerHTML = list;
    }
     
     
    function displayBD() {
    	// récup' de l'id de la série, écrit dans la VALUE de l'OPTION
    	with (document.getElementById("serieName")) var idSerie = parseInt(options[selectedIndex].value); 
     
    	var serie = DOMXML.getElementsByTagName("serie")[idSerie];
    	var bds   = serie.getElementsByTagName("bd");
     
    	// Création de la TABLE avec les résultats
    	var table = "<table class=\"sortable\" width=\"100%\">\n";
    	table += "<tr><th width=\"20\">N°</th><th>Titre de l'album</th></td>\n";
     
    	for (var i=0, c=bds.length; i<c; i++) {
    		table += "<tr><td>" + bds[i].getAttribute("num") + "</td><td>" + bds[i].getAttribute("title") + "</td></tr>\n";
    	}
     
    	table += "</table>\n";
     
    	document.getElementById("outputBDDiv").innerHTML = table;
    }
    si vous tester ce code il affiche en premier lieu les différents noms de série

    et après a chaque sélection de nom de série il affiche les différents titres de bd


    et à ce moment je suis entrain d'adopter ce code avec votre principe (les Bean)

    je creer une class java nomme Recuperation

    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
     
    public class Recuperation
    {
     
    	private int episode;
    //je n'arrive pas a comprendre ce type SelectItem[]
    	public SelectItem[] getListEpisodes(){
    	     // parser le xml, la db ou ce que vous voulez pour générer
    	     // la liste d"objets SelectItem, exemple statique  ici les le code le plus important
     
    		InputStream source = new URL("data.xml").openStream();
    		//est ce que je dois utiliser le meme code pour parser le fichier .xml que j'ai deja l'utiliser dans le code de javascript  ou je dois utiliser autre code
     
     
    	     return new SelectItem[]{
    	        new SelectItem(1,"Red Dust"),
    	        new SelectItem(2, "Les guerriers du désespoir"),
    	        new SelectItem(3, "Les loups de Wyoming"),
    	        new SelectItem(4, "Le ciel est rouge sur Laramie"),
    	        new SelectItem(7, "Le doigt du diable"),
    	        new SelectItem(8, "Les shériffs"),
    	        new SelectItem(9, "Et le diable hurla de joie")
    	     }
    	}
     
     
     
     
     
     
     
     
     
     
     
     
    	public int getEpisode() {
    		return episode;
    	}
    	public void setEpisode(int episode) {
    		this.episode = episode;
    	}
     
     
     
     
     
     
    }
    et si j'arrive a compléter correctement cette class java(bean)

    comme vous dite je dois mettre dans ma page web (qui est en richfaces) ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <h:form>
     <h:selectOneMenu value="#{monBean.episode}">
      <f:selectItems value="#{monBean.listEpisodes}"/>
     </h:selectOneMenu>
    </h:form
    merci d'avance

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    vous trouverez pas mal de doc en ligne sur richfaces expliquant comment remplir une liste déroulante en fonction de la sélection dans une autre liste déroulante, c'est un des besoins les plus courants

  15. #15
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    vous avez raison

    mais pouvez m'aidez juste a compléter le code de la class java Recuperation

    car garce à cette class java je dois remplir la premiere liste deroulante qui contient le nom de serie dans mon cas la liste dois contenir Comanche et Seuls

    bien sur ces deux noms sont récupérer de fichier data.xml

  16. #16
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    le plus simple pour lire un xml en java quand on débute, regardez du coté de JDom .

  17. #17
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    j'ai un exemple de code qui avec lui j'arrive à parser le fichier .xml suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <applications>
       <application>
          <nom>fireFox</nom>
          <occupation>50</occupation>
       </application>
     
     
     
     
     
    </applications>
    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
    import java.io.*;
    import org.jdom.*;
    import org.jdom.input.*;
    import java.util.List;
    import java.util.Iterator;
     
    public class Exemple{
       static org.jdom.Document document;
       static Element racine;
     
       public void afficheALL(){
       SAXBuilder sxb = new SAXBuilder();
        document = sxb.build(new File("data.xml"));
          racine = document.getRootElement();
        List listApplications = racine.getChildren("application");
        Iterator i = listApplications.iterator();
       while(i.hasNext()){
          Element courant = (Element)i.next();
         // System.out.println(courant.getValue());  //Afficher les noms + occupation
          System.out.println("\n"+courant.getChild("nom").getValue()+" \n"+courant.getChild("occupation").getValue());
         // System.out.println(courant.getChild("nom").getValue());
       }
    }
    }
    avec le meme principe je dois faire pour mon fichier data.xml

    mais le problème comment remplir le liste deroulante avec comme je dis juste les noms de serie

  18. #18
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    à la place de System.out.println, vous faite un new SelecteItem, que vous ajoutez au tableau, tout simplement.

  19. #19
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut
    et si je revient dans mon contexte pour ce fichier test.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
    <bds>
     
     
     
     
     
    <serie name="Comanche" interest="5">
    <bd num="1" title="Red Dust"/>
    <bd num="2" title="Les guerriers du désespoir"/>
    <bd num="3" title="Les loups de Wyoming"/>
    <bd num="4" title="Le ciel est rouge sur Laramie"/>
    <bd num="7" title="Le doigt du diable"/>
    <bd num="8" title="Les shériffs"/>
    <bd num="9" title="Et le diable hurla de joie"/>
    </serie>
     
    <serie name="Seuls" interest="5">
    <bd num="1" title="La Disparition"/>
    <bd num="2" title="Le Maître des couteaux"/>
    <bd num="3" title="Le Clan du requin"/>
    <bd num="4" title="Les Cairns rouges"/>
    <bd num="5" title="Au cœur du maelström"/>
    </serie>
    </bds>

    la version final de la class Recuperation
    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
    public class Recuperation
    {
     
     public SelectItem[] getListEpisodes(){
     SAXBuilder sxb = new SAXBuilder();
        document = sxb.build(new File("test.xml"));
          racine = document.getRootElement();
        Listbds = racine.getChildren("serie");
        Iterator i = listbds.iterator();
       while(i.hasNext()){
          Element courant = (Element)i.next();
     
     
     return new SelectItem[]{
            new SelectItem(courant.getChild("name").getValue())
     
         }
    }

    et pour le code de la page web en richfaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <h:form>
     <h:selectOneMenu>
      <f:selectItems value="#{ Recuperation
    .listEpisodes}"/>
     </h:selectOneMenu>
    </h:form
    merci de m'aidez a corriger ce code s'il est incorecte

  20. #20
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en JSF, tous les composant d'input doivent pointer sur une valeur, donc le selectOneMenu doit pointer sur quelque chose. Ensuite pas d'espace après l'accolade ouvrante dans dans "#{Recuperation.listEpisodes}"

    Enfin, dans votre code java, vous devez bien vous rendre compte à le voir que vous n'allez jamais retourner que le premier élément de votre fichier xml, ce qui n'est pas ce que vous voulez faire.

    Bref, un peu de logique de programmeur quand même Remplissez le tableau dans la boucle et puis seulement faites le return

Discussions similaires

  1. Erreur de syntaxe dans mon code SQL
    Par Salsaboy60 dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/04/2014, 21h08
  2. Erreur syntaxe code xslt
    Par kcizth dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/12/2013, 13h38
  3. [XL-2003] Erreur syntaxe code
    Par Jayyy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/06/2011, 08h15
  4. Erreur de syntaxe dans mon code (pas facile à trouver)
    Par beegees dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/01/2010, 07h42
  5. erreur syntaxe dans le code
    Par Daniela dans le forum Access
    Réponses: 3
    Dernier message: 18/12/2006, 12h43

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