Ho un modulo con un pulsante che apre una Primafaces overlayPanel
. Nel pannello c'è un altro pulsante che esegue un'azione Ajax e quindi chiude l'overlay.
Qui è una versione semplificata senza alcuna azione Ajax a tutti:Primefaces overlay dinamicoPannello che mostra una sola volta
<h:form>
<p:commandButton id="button1" value="Open overlay" type="button"/>
<p:overlayPanel for="button1" widgetVar="ovl" dynamic="true">
<p:commandButton value="Close" oncomplete="ovl.hide();"
update="@form"/>
</p:overlayPanel>
</h:form>
Si prega di notare che il pannello deve avere dynamic="true"
perché il contenuto dinamico devono essere recuperati in applicazione reale, e update="@form"
è necessaria al fine di aggiornare altra forma componenti.
Il problema è: se ho entrambi gli atti, dynamic="true"
e update="@form"
, la sovrapposizione viene visualizzata solo la prima volta. Dopo aver fatto clic sul pulsante "Chiudi", se provo a fare clic su "Apri sovrapposizione" ancora una volta, il pannello non verrà visualizzato.
Cosa sto sbagliando?
(utilizzando primefaces 3.5 e GlassFish 3.1.2.2)
Grazie Aksel. Sfortunatamente l'overlay fa parte di un componente composito utilizzato in molte viste diverse, quindi deve essere ospitato dall'elemento parent form: non può definire la propria forma perché finirei con moduli nidificati. – yankee