PrimeFaces boîte de dialogue de chargement différé (dynamique=“true”) ne fonctionne pas?
Récemment, j'ai changé tous mes grains de RequestScoped
à ViewScoped
. Soudain, le chargement différé des boîtes de dialogue ne fonctionne pas. Je suis à l'aide de PrimeFaces
JSF bibliothèque.
<html>
<h:body>
<f:view>
<h:form>
<p:commandButton id="addId" value="Add" title="Add" type="button" onclick="dlgMultiFileSelect.show();"/>
...
</h:form>
<p:dialog header="Dialog" widgetVar="dlgMultiFileSelect" modal="true" resizable="true" dynamic="true">
<ui:include src="/dialogs/media_browser.xhtml"/>
</p:dialog>
</f:view>
</h:body>
</html>
Semble dynamic="true"
ne fonctionne pas depuis le backing bean dans media_browser.xhtml
est initialisé immédiatement, et non pas lorsque le bouton est cliqué.
Je fais quelque chose de mal?
À L'Aide De PrimeFaces 3.5.0.
Peut-être a à voir avec PARTIAL_STATE_SAVING? stackoverflow.com/questions/5541813/...
OriginalL'auteur Danijel | 2013-05-14
Vous devez vous connecter pour publier un commentaire.
avons trouvé quelques-unes assez simple solution de contournement:
Citons BalusC la réponse à cette autre question:
Passez de l'exécution de <ui:include> lorsque le parent composant de l'INTERFACE utilisateur n'est pas rendu
Concernant sa première proposition:
<c:if>
autour de la<ui:include>
partie.Donc d'abord ajouter une nouvelle méthode à votre bean. (peut même être utile dans certaines applications étendue de haricots pour les réutiliser)
Puis placez votre
<ui:include>
à l'intérieur suivant<c:if>
:Donc au temps de chargement de page, la demande n'est pas ajax... et sur d'autres requêtes ajax sur la page de base, la boîte de dialogue ne sera pas mis à jour...
Mais si vous déclenchez votre boîte de dialogue
et mise à jour de son contenu, il sera enfin rendue!
Veuillez noter les changements suivants: La p:dialogue id, p:commandButton mise à jour et p:commandButton oncomplete
OriginalL'auteur someuser
Facelet tag ui:include seront traités plus tôt dans le cycle et donc il est initialisé. Si vous voulez mettre à jour le contenu de la boîte de dialogue sur le bouton cliquer, vous avez besoin de le faire à l'aide de la mise à jour="id de la boîte de dialogue" sur votre bouton de commande. Vous pouvez utiliser pour votre interface utilisateur:inclure afin que la page n'est pas chargée initialement.
OriginalL'auteur Murali D