J'ai une page contenant un PrimeFaces (2.2.1) composant Editor, un bouton Actualiser et un selectOneMenu, dont la sélection affecte le contenu de l'éditeur, comme suit:Comment actualiser la page dans JSF dans la sélection selectOneMenu?
<p:editor id="uploadedText" value="#{facilityDataUploadBean.uploadedText}"
width="600" height="180" disabled="true" controls="" />
<h:commandButton value="Refresh" immediate="true" />
<h:selectOneMenu id="skipLines" styleClass="dropdown"
value="#{facilityDataUploadBean.skipLines}">
<f:selectItems value="#{facilityDataUploadBean.skipLinesList}" />
<f:ajax listener="#{facilityDataUploadBean.importParameterChanged}" />
</h:selectOneMenu>
facilityDataUploadBean.importParameterChanged
mises à jour facilityDataUploadBean.uploadedText
. Après avoir modifié la valeur de selectOneMenu, l'opérateur appuie sur le bouton Actualiser pour actualiser la page, y compris le contenu du p:editor
. (Je ne peux pas simplement rafraîchir le p:editor
en utilisant AJAX, car il ne rendra pas correctement le rendu, au moins dans PF 2.2.1.)
Il semble que je devrais être en mesure d'accomplir l'actualisation de la page automatiquement lorsque le selectOneMenu
La valeur est modifiée, mais j'ai été incapable de trouver une combinaison d'attributs et d'événements qui le feront. J'ai essayé diverses combinaisons de onchange="submit();"
, immediate="true"
et valueChangeListener
sur le selectOneMenu
, ainsi que execute="@all/@form"
, render="@all/@form"
sur l'événement f:ajax
, le tout en vain. Ma solution de contournement actuelle consiste à afficher un message demandant à l'utilisateur d'appuyer sur le bouton Actualiser chaque fois qu'ils changent la sélection selectOneMenu
- jolie hokey.
De temps en temps, une modification du selectOneMenu ne prend pas en compte - peut-être que l'actualisation de la page se produit avant que l'AJAX qui définit la valeur dans le bean backing s'exécute. Mais je ne l'ai pas vu quitter l'interface utilisateur dans un état incohérent ou montrant une valeur différente de celle actuellement détenue par le bean backing (qui est SessionScoped). –