Utiliser Java depuis JavaScript [Résolu]

Messages postés
31
Date d'inscription
samedi 29 mars 2003
Dernière intervention
24 juin 2008
- - Dernière réponse : martok
Messages postés
31
Date d'inscription
samedi 29 mars 2003
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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
31
Date d'inscription
samedi 29 mars 2003
Dernière intervention
24 juin 2008
3
Merci
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();

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de martok
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Dernière intervention
23 décembre 2008
0
Merci
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
Commenter la réponse de indiana_jules
Messages postés
31
Date d'inscription
samedi 29 mars 2003
Dernière intervention
24 juin 2008
0
Merci
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 :-)
Commenter la réponse de martok

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.