IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

JavaScript et Managed Bean


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 146
    Par défaut JavaScript et Managed Bean
    Bonjour à tous,

    j'aimerais savoir s'il était possible de faire interagir du javascript et un managed bean et si oui comment et dans quel sens ?

    J'en aurais car ; dans ma page xhtml j'ai plusieurs p:commandLink. Actuellement, en fonction du lien sur lequel on clique certaines info sont envoyés à ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p:commandLink value="Coucou" action="#{monBean.goTo(i, mandant.num)}" />
    Ma fonction goTo créer avec ces 2 paramètres (un objet instance et un string) une chaîne de caractères. Pour la créer, mon bean interroge ma base de données.

    Et c'est cette chaîne de caractère que j'aimerais envoyer à ma fonction javascript. Comment faire ?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 146
    Par défaut
    J'ai testé sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    	function maFonction()
    	{
    		alert("#{monBean.monString}");
    	}
    </script>
     
    <p:commandLink value="Coucou" action="#{monBean.goTo(i, mandant.num)}" oncomplete="maFonction()" />
    Maintenant ma fonction goTo crée un string (monString), auquel j'ai ajouté un getter.

    Résultat :
    - sous IE rien ne se produit ; dans les logs je ne le vois ni appeler la fonction goTo, ni le getter de monString.
    - sous chrome j'ai une pop up qui apparait avec rien comme corps ; dans les logs je vois que goTo est appelé, par contre mon getter n'est jamais appelé.

    J'ai réalisé le même test avec un simple alert('Coucou'). Sous chrome pas de problème, mais sous IE je n'ai rien qui s'affiche. Je ne comprend pas pourquoi car dans une autre page de mon site ce simple test fonctionne...

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Le javascript s'exécute dans le navigateur, les managed bean sont présent sur le serveur. La réponse simple est non. La réponse compliquée est: il existe des librairies JSF qui le font en interne et te fournissent des composant de haut niveau, comme par exemple pour exécuter des commandlink en ajax. Mais dans tous les cas, tu n'aura pas un truc tout simple genre j'appelle la méthode X du bean, je récupère le résultat et je continue en javascript.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pourquoi demander à un ManagedBean d'exécuter un javascript ?
    Tu as plein de possibilité (surtout avec Primefaces) pour afficher un composant après avoir exécuté une fonction sur le serveur...

    Je n'ai rien compris à ton besoin, peux-tu expliquer clairement ce que tu cherches à faire ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 146
    Par défaut
    Alors clairement :

    J'ai une fonction javascript qui me permet de lancer un programme (le SAP Logon) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script type="text/javascript">
    	function lancerstart() 
    	{
    		var w = new ActiveXObject("WScript.Shell");
    		var teste = "\"C:\\Program Files\\SAP\\FrontEnd\\SAPgui\\saplogon.exe\"";
    		w.run ('cmd /c "'+teste+'"'); 
    	}
    </script>
    J'ai besoin dans mon site de lancer ce programme mais pas seulement. Je dois lui fournir des options pour qu'il s'ouvre avec certains champs pré-remplis. Ces options correspondent à mon instance et à mon mandant. La seule façon que j'ai trouvé pour pouvoir ouvrir ce programme est de passer par du javascript. Car je ne peux rien installer sur les pc des utilisateurs. Donc je me suis tourné vers un code qui s’exécute coté client comme le programme en question est sur les postes clients.

    Au final pour créer ma commande j'ai besoin : d'interroger ma base de donnée pour connaitre le c:\Prog... (aujourd'hui l'instal est dans ce répertoire mais demain sa peut changer, je ne doit pas laisser sa en dur dans mon code), de passer par mon bean pour récupérer l'instance et le mandant.

    Ma commande finale ressemble à sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\SAP\FrontEnd\SAPgui\saplogon.exe" /SHORTCUT=" -sid="XXX" -client="000""
    Mon idée était de créer ma commande dans mon bean et de l'envoyé à mon javascript. Mais si vous avez une autre solution...

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pas besoin de tout ça...

    Tu ajoutes les propriétés dont tu as besoin dans ton bean et tu les initialises à la création du ManagedBean.
    Dans la page, tu n'as plus qu'à faire un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // code javascript
    ...
    var commande = "\"C:\Program Files\SAP\FrontEnd\SAPgui\saplogon.exe\" /SHORTCUT=" -sid=\"#{monBean.attribut1}\" -client=\"
    
    #{monBean.attribut2}\""
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. javascript & managed bean
    Par zouhayr dans le forum Développement Web en Java
    Réponses: 15
    Dernier message: 05/06/2012, 14h22
  2. Réponses: 3
    Dernier message: 15/09/2006, 14h01
  3. utilisation d'un managed bean par un autre
    Par Romain93 dans le forum JSF
    Réponses: 6
    Dernier message: 28/07/2006, 10h29
  4. Réponses: 4
    Dernier message: 10/03/2006, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo