Existe-t-il un moyen pour qu'un bean de support JSF provoque une mise à jour d'un composant sur la page? Je ne cherche pas à utiliser un composant ajax avec un attribut de mise à jour pour mettre à jour un composant sur la page. J'ai besoin de déclencher une mise à jour à partir d'une méthode de bean de sauvegarde JSF. Notez que la mise à jour sur la page peut avoir lieu après la fin de cette méthode ou avant son achèvement. J'utilise PrimeFaces, s'il existe une solution qui peut être obtenue en utilisant PrimeFaces.
jsf-2
primefaces
Les meilleures pratiques
la source
la source
Réponses:
À l'aide de l'API JSF standard, ajoutez l'ID client à
PartialViewContext#getRenderIds()
.À l'aide de l'API spécifique à PrimeFaces, utilisez
PrimeFaces.Ajax#update()
.Ou si vous n'êtes pas encore sur PrimeFaces 6.2+, utilisez
RequestContext#update()
.Si vous utilisez la bibliothèque d'utilitaires JSF OmniFaces , utilisez
Ajax#update()
.Indépendamment de la manière, notez que ces ID client doivent représenter des ID client absolus qui ne sont pas précédés du
NamingContainer
caractère séparateur comme vous le feriez du côté de la vue.la source
<f:ajax listener>
ou<f:event type="preRenderView" listener>
<f:ajax>
. Ceci est introduit depuis JSF 2.0. Vous devrez recourir aux installations spécifiques de la bibliothèque de composants JSF 1.2.J'ai également essayé de mettre à jour un composant à partir d'un bean / classe de support jsf
Vous devez effectuer les opérations suivantes après avoir manipulé le composant d'interface utilisateur:
Il est important d'utiliser le clientId au lieu du componentId (côté serveur) !!
la source
Le
RequestContext
est obsolète de Primefaces 6.2 . À partir de cette version, utilisez les éléments suivants:Et pour exécuter javascript à partir du backbean, utilisez cette méthode:
Référence:
la source
Tout n'est possible que s'il y a suffisamment de temps pour faire des recherches :)
Ce que je dois faire, c'est comme avoir des personnes que j'itère dans une interface utilisateur: répéter et afficher les noms et autres champs dans les entrées. Mais l'un des champs était singleSelect - A et en fonction de sa valeur, mettre à jour une autre entrée - B. même ui: répéter n'a pas d'id que j'ai mis et il est apparu dans l'arborescence DOM
Que les identifiants dans le html étaient quelque chose comme:
Que dans la vue, j'ai une méthode comme:
Et sa mise en œuvre était dans le bean comme:
Donc, de cette façon, j'ai mis à jour l'élément du bean sans aucun problème. PF version 6.2
Bonne chance et bon codage :)
la source
personType
, il est superflu de transmettre à la fois la personne et l'index à l'écouteur ajax. Vous pouvez obtenir à la fois l'identifiant et la valeur de l'événement. Mais votre solution peut être nécessaire pour votre cas d'utilisation spécifique, mais comme il n'y a pas d'exemple complet (dans une saveur d' exemple reproductible minimale ), il est difficile de le dire.