L'appel d'une fonction JavaScript à partir de managed bean
Est-il un moyen d'appel (exécuter) une fonction JavaScript à partir de managed bean dans JSF?
Si c'est pertinent, je suis aussi à l'aide de PrimeFaces.
Vous devez vous connecter pour publier un commentaire.
Dans PrimeFaces pré 6.2, vous pouvez utiliser
RequestContext#execute()
pour cela.Dans PrimeFaces 6.2 et jusqu':
Dans la norme ACI, il n'est pas directement l'API publique pour que. Le mieux ce que vous pouvez obtenir est de définir le script comme un haricot de propriété, et à condition de rendre un
<h:outputScript>
composant lorsque le bean propriété n'est pas vide.Dans le cas où vous êtes à la soumission du formulaire en ajax, n'oubliez pas d'envelopper le
<h:outputScript>
dans un autre composant, et ajax-mise à jour à la place. Voir aussi Ajax mise à jour/render ne fonctionne pas sur un composant qui a rendu l'attribut.Que "il n'y a pas de direct API publique pour que la" déclaration, curieusement la
PartialResponseWriter
classe (responsable de l'écriture de JSF, ajax réponses) a déjà depuis JSF 2.0startEval()
etendEval()
méthodes qui devrait vous permettre de vous écrire rappel des scripts directement à la réponse, mais jusqu'à venir JSF 2.3 il était étonnamment pas de méthode publique dansPartialViewContext
qui va déléguer à ces méthodes. Comme par question 1412PartialViewContext#getEvalScripts()
est finalement été ajoutées à l'API publique.Pour les anciens JSF versions, ce qui ne peut être mis en œuvre par la création d'une coutume
PartialViewContext
mise en œuvre. JSF bibliothèque utilitaire OmniFaces a fait exactement cela avecOmniPartialViewContext
qui peut être utilisé parAjax
utilitaire de la classe.Voir aussi:
Selon la version de Primefaces vous êtes sur que vous pouvez utiliser
RequestContext.execute("{js here}");
De la Primefaces 3.4 documentation:
Code
Chose la plus proche de Primefaces est;
http://www.primefaces.org/showcase/ui/callbackParams.jsf
Avoir dit, il y a également une amélioration dans la version 3.0;
http://code.google.com/p/primefaces/issues/detail?id=1342
Vous ne pouvez pas tout simplement.
Managed Bean
fonctionne sur le serveur et JavaScript sur le navigateur.Vous pouvez faire conditionnellement invoquer JavaScript en fonction de la valeur définie dans managedbean
if("#{someManagedBean.someFlag}"=='true'){//take action }
,En général, Java fournit une API pour évaluer une chaîne de caractères à l'aide d'un moteur de script. Ceci peut être accompli par javax.script.ScriptEngine et javax.script.ScriptEngineManager classes.
Je ne suis pas entièrement sûr de ce que votre situation est, mais si vous pouvez passer le javascript comme une chaîne de caractères pour le managed bean, vous pourriez probablement utiliser Java API de script pour exécuter du javascript côté serveur.
Pour plus d'informations, consultez ce lien:
http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html