martok
Messages postés31Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention24 juin 2008
-
11 oct. 2006 à 18:16
martok
Messages postés31Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention24 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.
martok
Messages postés31Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention24 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>
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();
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 200822 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.
martok
Messages postés31Date d'inscriptionsamedi 29 mars 2003StatutMembreDernière intervention24 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.