Et oui, tout arrive: ça marche!!!

En fait, je n'étais pas loin avec mon idée de conflit avec mon showForm ....

J' ai tout simplement mis mon premier Showform (ligne 17) à la place du second 
(ligne 37).

Ainsi, tout est fait depuis le flowscript.

Merci à tous, votre aide m'a été très précieuse.

Bérengère

        -------- Message d'origine-------- 
        De: [EMAIL PROTECTED] 
        Date: mer. 08/02/2006 15:58 
        À: [email protected] 
        Cc: 
        Objet: RE: Unifier getChild() et lookupWidget() (était Re: compiler 
code java)
        
        


        C'est encore moi...
        J'ai tenté de mettre mon bout de javascript dans mon xml de definition 
entre deux balise <fd:javascript>
        
        Mon fichier => multipage_model.xml:
        [...]
        <fd:repeater-action command="add-row" id="addlocus" 
repeater="all_locus">
          <fd:label>Add locus</fd:label>
                <fd:on-action>
                        <fd:javascript>
                                var form = event.source.form;
                                var repeater = 
form.lookupWidget("page3/all_locus");
                                repeater.addRow();
                                var row = repeater.getRow(0);
                                var field = row.lookupWidget("name");
                                field.setValue("APOE");
                        </fd:javascript>
                 </fd:on-action>
        </fd:repeater-action>
        [...]
        
        Dans ce cas, ça fonctionne, mais uniquement quand je clique sur mon 
bouton "Add locus"...
        Bref ce n'est pas encore ça...
        Existe-il un autre endroit plus adapté?
        Sûrement, mais il se cache :-)
        
        Merci
        
        Bérengère
        
        -----Message d'origine-----
        De : [EMAIL PROTECTED]
        [mailto:[EMAIL PROTECTED]
        Envoyé : Wednesday, February 08, 2006 12:16
        À : [email protected]
        Objet : RE: Unifier getChild() et lookupWidget() (était Re: compiler
        code java)
        
        
        En fait, les infos sont bien pris en compte dans mon binding, mais ne 
s'affiche pas dans mon formulaire (interface html)...
        Peut-être que je dois préciser qqch dans mon xml de définition?
        Merci
        Bérengère
        
        -----Message d'origine-----
        De : [EMAIL PROTECTED]
        [mailto:[EMAIL PROTECTED]
        Envoyé : Wednesday, February 08, 2006 10:04
        À : [email protected]
        Objet : RE: Unifier getChild() et lookupWidget() (était Re: compiler
        code java)
        
        
        En effet, je pensais que ça allait marcher avec lookupWidget()que 
j'utilise a d'autre moment dans mon flowscript, et ça fonctionne très bien...
        Je me suis permise de remettre mon extrait de code (lignes 31-37) dans 
son contexte...j'ai peut-être fait une autre erreur qui rend ce passage 
invisible (mais aucun message d'erreur).
        
                - Ne pensez-vous pas que cela pose problème que je fasse un 
showForm à la ligne 17 , et que je recommence à la ligne 37?
        
        Sinon, mon repeater en lui même fonctione, car quand je suis dans mon 
formulaire je peux ajouter , supprimer des lignes sans problème, mais quand il 
s'agit de lui imposer des lignes dans mon flowscript...c'est une autre paire de 
manche...
        Merci pour tous vos conseils.
        
        Bérengère
        
        1 function do_multipage() {
        2       var data = new Object();
        3      
        4       data.resultList = new Array(3);
        5       data.resultList[0] = {value:"", label:"Résultat?"};
        6       [...]
        7                      
        8       // crée le formulaire à partir d'un fichier de définition
        9       var form = new Form("forms/multipage_model.xml");
        10   
        11      // charge le fichier de personnalisation
        12      var doc = 
Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
        13      doc.appendChild(doc.createElement("RESULTS"));
        14  
        15      // fichier de binding
        16      form.createBinding("forms/multipage_binding.xml");
        17      form.showForm("multipage-display-pipeline.jx",data);
        18  
        19     
        20      // enregistre les modifications du formulaire dans le fichier 
de perso.
        21      var domaine = form.lookupWidget("page1/domaine").getValue();
        22      var disease = form.lookupWidget("page1/disease").getValue();
        23      var disease2 = form.lookupWidget("page1/disease2").getValue();
        24  
        25     //Parsing du fichier XML downloade
        26     var docXML = loadDocument( 
"/evrdata/BIOANALYSE/WEB/PUBMEDnew/analyser");
        27     var processor = 
cocoon.getComponent(Packages.org.apache.excalibur.xml.xpath.XPathProcessor.ROLE 
);
        28     var PMID = 
Packages.org.apache.cocoon.xml.dom.DOMUtil.getValueOf(                          
            docXML,"/PubmedArticleSet/PubmedArticle/MedlineCitation/PMID", 
"DefaultValue",processor);
        29     var pmid = form.lookupWidget("page3/pmid");
        30     pmid.setValue(PMID);
               
        31    //Initiation de mon repeater
        32    var repeater = form.lookupWidget("page3/all_locus");
        33    repeater.addRow();
        34    var row = repeater.getRow(0);
        35    var field = row.getChild("locus");
        36    field.setValue("6p");
        37    form.showForm("multipage-display-pipeline.jx");
           
        38    var docXMLResult = null;
        39    fileXMLResult = "/evrdata/BIOANALYSE/pubmed/" + domaine  + "/" + 
disease  + "/" + disease2 + "/savep" + PMID + "-         result.xml";
        40    if (new java.io.File(fileXMLResult).exists()) {
        41              docXMLResult = loadDocument(fileXMLResult);
        42              var processor = 
cocoon.getComponent(Packages.org.apache.excalibur.xml.xpath.XPathProcessor.ROLE 
);
        43              var Nodelist = 
Packages.org.apache.cocoon.xml.dom.DOMUtil.selectNodeList(                      
      docXMLResult,"/RESULTS/LocusSet/Annotation",processor);
        44              var locus = 
form.lookupWidget("page3/all_locus").getRow(0).getChild("locus").setValue("6p13");
        45    }
             
        46    //Sauvegarde du fichier XML pubmed
        47    var fileXML = "";
        48    if (disease2 != null) {
        49              fileXML = "/evrdata/BIOANALYSE/pubmed/" + domaine  + 
"/" + disease  + "/" + disease2 + "/p" + PMID + ".xml";
        50      } else {
        51      fileXML = "/evrdata/BIOANALYSE/pubmed/" + domaine  + "/" + 
disease  + "/p" + PMID + ".xml";
        52    }
        53    saveDocument(docXML, fileXML);
        54  
        55    // save the DOM-tree back to an XML file, the makeTargetURI
        56    // function makes a modified filename so that the
        57    // original document is not overwritten
        58    if (disease2 != null) {
        59              form.save(doc);
        60              saveDocument(doc, makeTargetURI(fileXML));
        61    } else {
        62      form.save(doc);
        63              saveDocument(doc, makeTargetURI(fileXML));
        64    }
           
        65    cocoon.sendPage("xmlresult-display-pipeline.jx",
        66       {title: "Here's the resulting document", document: doc}
        67    );
        68 }
        
        -----Message d'origine-----
        De : Sylvain Wallez [mailto:[EMAIL PROTECTED]
        Envoyé : Tuesday, February 07, 2006 18:23
        À : [email protected]
        Objet : Unifier getChild() et lookupWidget() (était Re: compiler code
        java)
        
        
        [EMAIL PROTECTED] wrote:
        > Je récapitule:
        > Voilà ce que j'ai ecrit:
        >     var repeater = form.getChild("page3/all_locus");
        >  
        
        Il faut utiliser form.lookupWidget("page3/all_locus"). getChild cherche
        uniquement dans les fils directs, alors que lookupWidget interprète le
        chemin.
        
        Je sais, c'est subtil et pas évident. Que pensez-vous, chers
        z'utilisateurs, que dans le Cocoon 2.1.9 à venir, on unifie les
        fonctions getChild() et lookupWidget() ?
        
        Sylvain
        
        --
        Sylvain Wallez                        Anyware Technologies
        http://bluxte.net                     http://www.anyware-tech.com
        Apache Software Foundation Member     Research & Technology Director
        
        
        ---------------------------------------------------------------------
        Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
        Pour vous desinscrire : mailto:[EMAIL PROTECTED]
        Autres commandes : mailto:[EMAIL PROTECTED]
        
        
        ---------------------------------------------------------------------
        Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
        Pour vous desinscrire : mailto:[EMAIL PROTECTED]
        Autres commandes : mailto:[EMAIL PROTECTED]
        
        
        ---------------------------------------------------------------------
        Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
        Pour vous desinscrire : mailto:[EMAIL PROTECTED]
        Autres commandes : mailto:[EMAIL PROTECTED]
        
        
        ---------------------------------------------------------------------
        Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
        Pour vous desinscrire : mailto:[EMAIL PROTECTED]
        Autres commandes : mailto:[EMAIL PROTECTED]
        
        

Répondre à