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]