[PrimeFaces] Les champs d'un dialogue ne se mettent pas à jour si la valeur d'une selectOneMenu est modifiée
Bonjour,
J'utilise la version 6.1 de primefaces.
Voici mon problème :
J'ai un treetable dans lequel j'ai un commandLink par ligne qui ouvre un dialogue pour éditer l'objet de la ligne en question.
Dans le dialogue, j'ai un selectOneMenu qui permet de changer l'étape d'avancement de ma ligne avec en event ajax "change". Si je modifie cette valeur, lors des prochaines ouvertures du dialogue, les champs gardent les valeurs de la ligne pour laquelle j'ai fais la modification .... par contre, si je ne change pas cette valeur, les champs sont bien à jour avec les valeurs de la ligne sélectionnée.
J'ai essayé toute sorte d'update, actions et autre mais sans succès. Je pense qu'il s'agit "juste" d'un problème de rafraichissement mais je ne trouve pas.
Voici le code de l'action qui ouvre la dialogue
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <p:commandLink
id="cmpBoutonEditer"
oncomplete="PF('dialogMd').show()"
update=":monForm:dialog"
rendered="#{acquis.type eq 'offre' or acquis.type eq 'contrat'}">
<f:setPropertyActionListener
target="#{monForm.selectedAcquis}"
value="#{acquis}" />
<i class="fa fa-edit"></i>
<p:tooltip
for="cmpBoutonEditer"
value="#{msg['Modifier']}" />
</p:commandLink> |
La code du dialogue :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| <h:form id="monDialogForm">
<!-- DIALOG pour modifier le détail de l'acquis -->
<p:dialog
modal="true"
dynamic="true"
width="550"
height="770"
widgetVar="dialogMandat"
id="dialog">
<f:event
listener="#{monForm.validateForm}"
type="postValidate" />
<div style="margin: 5px 10px 10px">
<p:outputLabel
value="#{msg['Detail']}"
styleClass="FontBold Fs18 hardblue" />
</div>
<!-- DETAIL DE L'OFFRE -->
<p:panelGrid
id="panelOffre"
layout="grid"
columns="2"
columnClasses="ui-grid-col-6,ui-grid-col-9"
style="border:0px !important; background:none;"
rendered="#{monForm.selectedAcquis.type eq 'offre'}">
<p:outputLabel value="#{msg['Numero']} :" />
<p:outputLabel
value="#{monForm.selectedAcquis.offre.numero}" />
<p:outputLabel value="#{msg['Date']} :" />
<p:calendar
id="cmpDateOffre"
disabled="#{monForm.selectedAcquis.offre.fluxAcquisCi ne 'RELANCE'
and monForm.selectedAcquis.offre.fluxAcquisCi ne 'ACCEPTEE'}"
value="#{monForm.selectedAcquis.offreVersion.dateOffre}"
showOn="true"
pattern="dd.MM.yyyy"
mask="true"
locale="fr" />
<p:outputLabel value="#{msg['Version']} :" />
<p:inputText
id="cmpVersionOffre"
value="#{monForm.selectedAcquis.offreVersion.versionOffre}"
disabled="#{monForm.selectedAcquis.offre.fluxAcquisCi ne 'RELANCE'
and monForm.selectedAcquis.offre.fluxAcquiCi ne 'ACCEPTEE'}" />
<p:outputLabel value="#{msg['EtapeActuelle']} :" />
<p:selectOneMenu
id="cmpEtapeActuelleOffre"
style="min-width:175px;"
value="#{monForm.selectedAcquis.offre.fluxAcquisCi}">
<f:selectItems
value="#{monForm.listFluxAcquisOffre}" />
<p:ajax
event="valueChange"
update="cmpDateDelaiOffre cmpVersionOffre cmpDateOffre"
listener="#{monForm.updateDateDelaiAction}" />
</p:selectOneMenu>
<p:outputLabel value="#{msg['DelaiDAction']} :" />
<p:calendar
id="cmpDateDelaiOffre"
disabled="#{monForm.selectedAcquis.offre.fluxAcquisCi eq 'NON_ACQUIS' or monForm.selectedAcquis.offre.fluxAcquisCi eq 'ACCEPTEE'}"
value="#{monForm.selectedAcquis.offre.}"
showOn="true"
pattern="dd.MM.yyyy"
mask="true"
locale="fr">
<p:ajax
event="dateSelect"
listener="#{monForm.controlerDateDelaiAction()}"
update="messages" />
<p:ajax
event="change"
listener="#{monForm.controlerDateDelaiAction()}"
update="messages" />
</p:calendar>
</p:panelGrid>
<p:messages
id="messages"
escape="false"
autoUpdate="true" />
<div
align="center"
style="margin-top: 30px;">
<p:commandButton
id="cmpBtnEnregistrer"
value="#{msg['Enregistrer']}"
action="#{monForm.enregistrerModification}"
style="max-width:120px; margin-right:30px;"
update=":monForm:cmpTreeTableMandats" />
<p:commandButton
onclick="PF('dialogMandat').hide()"
value="#{msg['Annuler']}"
style="max-width:120px;" />
</div>
</p:dialog>
</h:form> |
La méthode appelée lors de la modification dans le selectOneMenu :
Code:
1 2 3
| public void updateDateDelaiAction() {
this.selectedAcquis.getOffre().setDateActionAcquis(null);
} |
Qq'un saurait-il me dire ce qu'il manque pour que cela fonctionne correctement ?
Merci pour votre aide