Utiliser Java depuis JavaScript

Résolu
martok Messages postés 31 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 24 juin 2008 - 11 oct. 2006 à 18:16
martok Messages postés 31 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 24 juin 2008 - 13 oct. 2006 à 16:17
Salut,


Je travaille sur un portail SAP.
Les technologies que j'utilise sont Java et JavaScript. Je vais essayer de bien synthétiser le problème.
Coté Java, j'ai une page JSP associée à une classe behind qui gère les évènements de la page (ex: click sur le bouton modifier => méthode onModifier(Event e), click sur le bouton annuler => méthode onAnnuler(Event e).
Coté JavaScript, je m'abonne à des évènements du portail en utilisant un service du portail (Pour info EPCM.subscribeEvent(...) ).
L'envoi et l'écoute des évènements du portail est fait avec JavaScript.
Quand ma page JSP reçoit un certain évènement (généré par une autre page JSP), j'appelle une fonction JavaScript :
onEventClickSurLien(){...}


Et c'est là qu'on arrive à mon problème :
Depuis cette fonction (JavaScript), je voudrais
- ajouter à ma session un bean (donc Java depuis JavaScript),
- appeler une méthode de ma classe behind (Java depuis JavaScript), le but étant de rafraîchir la page. Au cours de ce rafraîchissement je vais utiliser le bean que j'ai ajouté à la session.


En résumé, mon problème est : comment intéragir avec Java depuis la fonction JavaScript (sachant que la page est déjà chargée dans le navigateur).
Si vous avez des pistes à me suggérer ...


Pour info, j'ai aussi posté ce message sur le forum JavaScript.


Merci d'avance

3 réponses

martok Messages postés 31 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 24 juin 2008
13 oct. 2006 à 16:17
Ok c'est fini. Alors en gros voilà comment j'ai fait :
Ajout d'un bouton et d'un textbox dans un div invisible.
Récupération de leurs ID HTML (parce qu'avec SAP on utilise des balises HTMLB. L'ID HTML change à chaque rafraichissement de la page).

<hbj:inputField id="idChamp" disabled="true" value="">
   <% 
   String idHtmlb = myContext.getParamIdForComponent(idChamp);
   idChamp.setJsObjectNeeded(true);
   %>
   <script language="Javascript">
      //Récupération de la variable Java dans une variable JavaScript déclarée au début de la page
      idtextfield = "<%=idHtmlb%>";
   </script>
 </hbj:inputField>

Même principe pour le bouton

<hbj:button id="btnRecharger" text="Recharger" disabled="false" design="standard" width="30" onClick="recharger">

Dans ma fonction JavaScript, exécutée à la réception d'un évènement portail :
var myTxtbox = document.getElementById(idtextfield);
myTxtbox.value = "valeur"
var myBtn = document.getElementById(idBtn);
myBtn.click();
3
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
12 oct. 2006 à 15:14
Salutation noble klingon,
hummm, il me semble que la communication javascript -> java soit très difficile voir impossible (mais je m'avance peut-être un peu trop).

Néanmoins, la version Mustange de Java (1.6) va incorporer Rhino, qui permet d'utiliser javascript dans ses applications java, ce qui pourrait palier à ton problème.

http://www.mozilla.org/rhino/

Voilà, en espèrant que je t'ai aidé un peu

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
0
martok Messages postés 31 Date d'inscription samedi 29 mars 2003 Statut Membre Dernière intervention 24 juin 2008
12 oct. 2006 à 16:53
Salut indiana_jules,

Merci pour l'info !
Je crois qu'il est possible d'appeler (recharger) ma page depuis le JavaScript en passant en paramètre la valeur que je voulais inclure dans la session. Je me retrouverais alors côté serveur et là ça devrait être bon ... a creuser.
Par contre je sais pas encore comment je vais m'y prendre.

Si vous avez d'autres idées je suis preneur :-)
0
Rejoignez-nous
A voir également