Utiliser object javascript dans une application javaJframe [Résolu]

Geaktoni - 6 févr. 2013 à 14:57 - Dernière réponse : cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention
- 11 févr. 2013 à 18:54
Hello !!

J'ai une question j'ai vu qu'il y avais une possibilité de passer un object javascript a une aplication java par la JFObject mais ce n'est que possible par une applet quand je désiriai avoir cette fonctionnalité sous une application Jframe qui me prend mes fichiers object1.js qui son des objets en javascript.

Avec qu'elle fonctionnalité ou comment pourrai-je récupèrer ses infos de mon objetc .js dans mon application java???


je vous remercie de votre aide.
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 8 févr. 2013 à 18:08
3
Merci
De rien

Par contre, penses aux autres, qui pourraient se poser une question similaire et mets une croix verte, pour indiquer que tu as la bonne réponse.
C'est un peu comme dans un jeu vidéo, j'ai fait un bon assist heal, et j'ai complété le défi pour aider le champion à XP, alors, le champion, il donne une croix verte, pour le loot toussa. Enfin bref, mets une croix verte stp.

Et non, tu me postes pas, je suis bénévole, et pas à la disposition de ...
Si tu as une question, tu postes sur le forum, et ceux qui comprennent ta question essaieront d'y répondre.

++

Merci cs_AlexN 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_AlexN
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 7 févr. 2013 à 09:56
0
Merci
Salut,

je ne connais pas JFObject, qu'est-ce que c'est ?
La classe JEditorPane de Swing implémente un browser très rudimentaire, qui n'interprète pas le javascript.
Il faut :
- soit utiliser des librairies externes (Lobo - lobobrowser.org ? Flying Saucer - http://code.google.com/p/flying-saucer/ ? DJ Project - http://djproject.sourceforge.net/ns/ ?)
- soit changer de librairie graphique (SWT de Eclipse contient une classe Browser qui permet d'intégrer un service comme googlemap) : http://www.eclipse.org/swt/snippets/#browser
Commenter la réponse de cs_AlexN
0
Merci
Hello !!
je te remercie déjà pour ses infos.
Mais tu aurais une idée comment je peux implémenter une fonction qui prend l'objet javascript et le met dans un objet ou plusieur en java avec eclipse ou un autre ??
Commenter la réponse de Geaktoni
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 7 févr. 2013 à 16:01
0
Merci
Re,

Je ne comprend pas ta question, du moins ce que tu entends par "l'objet javascript". (Source ? Lien ?)
Éventuellement, je peux comprendre, si tu me parles d'une classe qui "supporte le JavaScript", à savoir que la classe en question pourrait recevoir un flux/fichier de texte, qu'elle tenterait d’interpréter comme du JavaScript. Mais une classe standalone, qui interprète du JavaScript, ça n'a pas de sens, non plus. C'est pourquoi, je t'ai orienté vers des librairies qui construisent des Frames, qui contiennent un interpréteur HTML, qui lui contient un interpréteur JavaScript. Du JavaScript sans HTML ? Que veux tu faire avec ce JavaScript ?

Si tu veux utiliser Eclipse et sa classe Browser, tu dois voir à faire une application de type RCP, pour pouvoir en faire, éventuellement plus tard, une application autonome. Elle aura le Look&Feel d'Eclipse mais avec le support natif des librairies graphiques de l'OS sous lequel l'application sera déployée (OSGi standard). Voilà un exemple d’utilisation de JavaScript avec la classe Browser.
Commenter la réponse de cs_AlexN
0
Merci
Re ce que je voulais faire c'est de récupérer ce fichier javascript qui a cette structure et je voulais récupérer les infos dans un objet java comme ça je pouvais direct les utiliser

var thisRoadMap =
{
title:"Project Management Fundamentals",
modules :
[
{
title : "Project Initiation",
id : "m1",
visible : true,
activated : true,
less :
[
{
id : "less32",
title : "What's a project ?",
visible : true,
activated : true
},
{
id : "less1",
title : "How to start a project?",
visible : true,
activated : true
},
{
id :"less35",
title :"Identifying problems",
visible : true,
activated : true
}]
}
]
};
Commenter la réponse de Geaktoni
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 7 févr. 2013 à 20:55
0
Merci
Ok,

Je n'avais pas compris.
une possibilité de passer un object javascript a une aplication java par la JFObject

Tu veux parser un objet javascript (enfin sa représentation textuelle) au format JSON avec une librairie comme JSON-java.
Un exemple.

P.S. : quand tu écris du code dans un post, essaies d'utiliser les balises de format (javascript, dans ton cas), pour que ce soit plus facile à lire.
Commenter la réponse de cs_AlexN
0
Merci
Hello !!
dsl pour le code mais j'ai justement tenter de le passer en un json simplement la textuelle d'un JSON

c'est cela {"title":"Projet Management"},{"balbala":[{"id":"less201","title":"blabla"},{ etce....
alors j'ai fais une fonction qui me rajoute les " pour tous les truc ou il y en as pas mais c'est stocker dans une variable

et j'arrive pas à la passer a mon nouveau objet Gson que je tente de parser pour avoir ces info dans l'objet java je te montre mon code.

cela me permet d'avoir le contenu du fichier sur une seul ligne et en format JSON mais après quand je le pars il me dis qu'il y a une erreur à la ligne 1 colones 768.

 int i = 0;
            String caractere;
            boolean gui=false;
            String contenu="";
            lignelu lignelu.replace("var thisRoadMap", "");
            lignelu = lignelu.replace(";", "");
           
            //boucle supriment les espaces de la ligne
             while(i<lignelu.length()){
                char mano = lignelu.charAt(i);
                caractere=Character.toString(mano);
                //test si il y a un "
                if(""".equals(caractere)){
                    if(gui!=false){
                         gui=false;
                         i++;
                    }
                    else{
                        gui=true;
                        i++;
                    }
                }
                else{
                    if(gui!=false){
                        contenu +=Character.toString(mano);
                    }
                    else{
                            contenu +=Character.toString(mano).replaceAll(" ", "");
                    }
                    i++;
                }
            }
             contenu = contenu.replace("{", "{"");
             contenu = contenu.replace(":", "":"");
             contenu = contenu.replace(":"[",":[");
             contenu = contenu.replace(",","","");
             contenu = contenu.replace("}","{",""},{");
             
              //création de l'objet roadmap.js en objet java
            
             
             
            System.out.println(contenu);
Commenter la réponse de Geaktoni
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 8 févr. 2013 à 10:38
0
Merci
Ton code est faux et ne produit pas du JSON correctement formé.
Pour vérifier que le JSON est valide : JSONLint.
Inutile de remettre des guillemets où il en manque, le parser se débrouille sans, du moement que le format reste valide ailleurs.

         // Le format JSON commence par le caractère { et ensuite suit éventuellement une clé, ici "roadmap"
         lignelu lignelu.replace("var thisRoadMap", "{"roadmap" : ");
//         lignelu lignelu.replace("var thisRoadMap", "");
         lignelu = lignelu.replace(";", "");        
         // Il faut fermer la définition de l'objet roadmap
         contenu = lignelu + "}";

         // A Supprimer
//         //boucle supriment les espaces de la ligne
//          while(i<lignelu.length()){
//             char mano = lignelu.charAt(i);
//             caractere=Character.toString(mano);
//             //test si il y a un "
//             if(""".equals(caractere)){
//                 if(gui!=false){
//                      gui=false;
//                      i++;
//                 }
//                 else{
//                     gui=true;
//                     i++;
//                 }
//             }
//             else{
//                 if(gui!=false){
//                     contenu +=Character.toString(mano);
//                 }
//                 else{
//                         contenu +=Character.toString(mano).replaceAll(" ", "");
//                 }
//                 i++;
//             }
//         }
//          contenu = contenu.replace("{", "{"");
//          contenu = contenu.replace(":", "":"");
//          contenu = contenu.replace(":"[",":[");
//          contenu = contenu.replace(",","","");
//          contenu = contenu.replace("}","{",""},{");
//          
//          contenu = contenu.replaceFirst("true}", "true"}");
//          contenu += "}";
//          contenu = contenu.replaceFirst(""\\{"", "\\{"");

         //création de l'objet roadmap.js en objet java
         try {
        	 JSONObject myjson = new JSONObject(contenu);
        	 JSONObject json = myjson.getJSONObject("roadmap");
        	 System.out.println(json);
        	 System.out.println("title = " + json.getString("title"));
        	 JSONArray modules = json.getJSONArray("modules");
        	 System.out.println("modules = " + modules);
         } catch (JSONException e) {
        	 e.printStackTrace();
         }



sinon pour produire du JSON correct l'expression suivante semble marcher avec ton texte :

lignelu = lignelu.replaceAll("([ \\{])([a-z]+)([:,])", "$1"$2"$3");
Commenter la réponse de cs_AlexN
0
Merci
Merci ça marche nikel !! ^^ j'ai juste du faire des petit modification maintenant que j'ai un objet java grace à cela comment je peux accéder au info qui sont dans le tableau less dans le tableau module car j'arrive à afficher les modules mais pas les lesson ??

 
int size = modules.length();
                 for(int u=0;u<size;u++){
                 JSONObject another_Json_object = modules.getJSONObject(u);
                 System.out.println(another_Json_object);
                 
                 }


donc je refais une boucle for qui va chercher les info après que la première prenne le module ???
Commenter la réponse de Geaktoni
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 8 févr. 2013 à 12:59
0
Merci
Tu dois descendre dans l'objet, en connaissant a priori sa structure, pour demander au parser les sous-objets par leur clé ou leur position. En balisant la lecture par des try/catch lorsque la structure est irrégulière (ici il n'y a peut être pas toujours de sous tableau "less").

int size = modules.length();
for(int u=0;u<size;u++){
         JSONObject another_Json_object = modules.getJSONObject(u);
         System.out.println(another_Json_object);
         try {
        	 JSONArray less = another_Json_object.getJSONArray("less");
        	 System.out.println("less = " + less);        
         } catch (JSONException e) {
        	 e.printStackTrace();
         }
                 
}
Commenter la réponse de cs_AlexN
0
Merci
Merci beaucoup ça marche nikel !!

Si j'ai d'autre souci je te fais appel enfin je post ^^
Commenter la réponse de Geaktoni
0
Merci
ouki ça marche mais je là trouve ou cette croix verte car je la voie pas ???
Commenter la réponse de Geaktoni
0
Merci
j'ai encore un souci mais la je comprend vraiment pas pourquoi j'ai ce sousi.

je fais appel de ma classe Module et j'utilise un SET pour qu'il m'écrive la valeur dans ma classe comme je l'appel d'une autre classe.
Module JsonObjet = new Module();
            //envoie du string lignelu à la classe Module en format JSON
            JsonObjet.setJson(lignelu);


mais quand je tente dans ma méthode JsonRead dans ma classe Module de faire appel a la valeur Json il me retourn null quand j'ai pourtant quelque chose dans le set.

 
public void JsonRead(){
        System.out.println("coucou !! ");
        System.out.println(this.Json);
       try{ 
       JSONObject myjson = new JSONObject(this.Json);
       JSONObject json = myjson.getJSONObject("roadmap");
       System.out.println("title = " + json.getString("title"));
Commenter la réponse de Geaktoni
cs_AlexN 719 Messages postés lundi 5 décembre 2005Date d'inscription 8 janvier 2014 Dernière intervention - 11 févr. 2013 à 18:54
0
Merci
Tss tss,

N'abuses pas. La règle c'est "un fil de discussion, une question". Sinon tout le monde pose sa question sur le même fil, et pour avoir une réponse on fait défiler les 1000 réponses qui nous concernent pas. Après c'est l'anarchie !

P.S. : Ok pour la croix verte, mais c'est sur le post qui répond à ta question qu'il faut cocher le bouton "réponse acceptée", pas sur les posts avec les salutations d'usages. Rien de grave .

Pour ta dernière question (ma dernière réponse sur ce fil) : Peut être que ce que est stocké dans this.Json n'est pas du JSON correctement formé, et le parser te renvoie null. Valides le JSON plutôt que de te contenter de savoir "s'il y a quelque chose dedans", ton assertion n'est pas suffisante pour parer à une exception et il est donc difficile de comprendre l'erreur.
Commenter la réponse de cs_AlexN

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.