Remplir un formulaire avec les infos contenues dans un fichier

Shenron42000 Messages postés 46 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 janvier 2009 - 26 janv. 2009 à 09:24
Shenron42000 Messages postés 46 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 janvier 2009 - 28 janv. 2009 à 09:39
Bonjour,


Je débute en Java et j'ai d'énormes souci pour arriver à faire ce que je veux (c'est le moins qu'on puisse dire).


Je m'explique.


Je possède une page générée dynamiquement en PHP, qui contient un formulaire HTML (jusque là, pas de souci).


Je voudrais grâce à un applet Java, récupérer un fichier XML sur le poste du client pour "pré-remplir" le formulaire.


Par exemple, sur mon formulaire :

Code :
 
"text" id="prenom" name="prenom" value="" />
 

Et sur le poste du client (dans C:\test.xml par exemple) :

Code :
 
Mathias

 

Je voudrais donc récupérer la valeur "Mathias" sur le poste client avec du Java.

Puis ensuite faire un espèce de "document.getElementById('prenom').value = 'Mathias';"


Pour le moment je n'ai aucun souci pour parser un fichier XML sur mon PC (en local).

J'ai 2 fichiers .class et je le lance en ligne de commande : java monParseur.


Par contre dès que j'essaye d'en faire un .jar, j'obtiens des erreurs (Applet notinited)


De plus, je n'ai pas la moindre idée (si jamais j'arrivai à récupérer
les valeurs du XML sur le poste client) pour les passer au Javascript
afin de remplir le formulaire.


Donc si quelqu'un a une piste ou quelque chose pour m'aiguiller :

- Comment faire un Jar ?

(Je suis sous Eclipse, j'ai essayé avec FatJar, mais pas mieux =>
Applet notinited, alors que aucun souci en local avec mes .class).

- Comment appeler une fonction javascript & lui passer des variables ?


Merci d'avance si vous pouvez m'éclairer sur quelque chose

4 réponses

chris081 Messages postés 90 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 4 février 2009
26 janv. 2009 à 23:33
Salut

Les applets, dans un souci de sécurité, ne peuvent pas faire d'E/S avec des fichiers...

Donc, tu ne peux pas lire ton fichier .XML pour en récupérer les données...

Pour appeller une fonction en JavaScript, tu dois simplement entrer le nom de cette fonction, puis, entre parenthèses, la ou les valeurs voulues:
document.write ('Mathias';); return false;

Pour créer un fichier JAR, en ligne de commande, il suffit d'utiliser l'instruction jar:
jar -cvf /usr/local/* contenuLocal.jar

j'espere que ca t'aides un peu
chris081

<hr width="100%" />

Est-ce que les femmes pètent autant que les hommes ?
Oui. Cependant, les hommes semblent en tirer plus de gloire que les femmes.

Retrouvez l'intégrale ici
0
Shenron42000 Messages postés 46 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 janvier 2009
27 janv. 2009 à 11:33
Salut,

Merci pour le coup de pouce.
Après avoir compiler mon Jar, j'ai réussi à accéder au XML en le signant.

Par contre, pour ce qui est du l'appel de fonction javascript, j'ai encore du mal.
En entrant directement le nom de la fonction, je n'ai pas réussi, donc je me suis tourné vers les plugins Netscape (netscape.javascript.*), ce qui fonctionne uniquement si j'appelle ma fonction au clic sur un bouton.
Si je la veux en automatique (disons après quelques secondes) :

Thread.currentThread().sleep(2500);
            try {
                JSObject jso = JSObject.getWindow(this);
                jso.call("remplir_formulaire", new String[] {uri});
            } catch (JSException e) {
                e.printStackTrace();
            }

Alors, là ça ne marche plus :




netscape.javascript.JSException
at netscape.javascript.JSObject.getWindow(Unknown Source)
at XmlParser.(XmlParser.java:25)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
at java.applet.Applet.getParameter(Unknown Source)
... 11 more
 




Je continu de chercher, donc...

En tout cas, merci si vous avez des infos.
0
chris081 Messages postés 90 Date d'inscription mercredi 24 décembre 2008 Statut Membre Dernière intervention 4 février 2009
28 janv. 2009 à 03:25
Salut

J'ai trouvé:
To compile Java code to take advantage of JSObject, you must have the package netscape.javascript in the CLASSPATH. Currently, Java Plug-in 1.3 ships netscape.javascript in a JAR file called JAWS.JAR. To compile an applet which uses JSObject, please add JAWS.JAR in the CLASSPATH before compilation.


Notice that although JSObject is supported in Java Plug-in 1.3, it is not supported in AppletViewer in the Java 2 platform, Standard Edition v 1.3. As a result, applets using JSObject may not run in AppletViewer, or result in exceptions.

à:
JSObject. C'est probablement une des causes de ton exception. Sinon:

- Tu transmets à une fonction un argument de type null;

- Ta fonction (jso.call) retourne un argument de type null.

Vérifie ça, et tiens moi au courant, stp.

chris081

<hr align="left" width="33%" />

Est-ce que les femmes pètent autant que les hommes ?
Oui. Cependant, les hommes semblent en tirer plus de gloire que les femmes.

Retrouvez l'intégrale ici
0
Shenron42000 Messages postés 46 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 28 janvier 2009
28 janv. 2009 à 09:39
Meci de t'être penché sur mon souci.

Je ne pensais pas que cela venait de ma fonction (argument de type null), parce que si je l'appelle au clic sur un bouton, elle marche.
J'obtiens l'exception uniquement en l'appelant automatiquement après quelques secondes (sans intervention genre clic &
Thread.currentThread().sleep(2500);
.

Du coup pour régler le souci, j'ai fait un setTimeout côté JavaScript...


C'est un peu de la bidouille, mais ça marche :


chargement de la page -> setTimeout -> appel de la fonction de
l'applet en JS -> l'applet parse le XML -> l'applet retourne les
infos à une fonction JS pour remplir le formulaire.


Merci beaucoup pour l'aide.
0