questo è un metodo che dovrebbe funzionare nel vostro caso:
Bean Codice:
@ManagedBean
@ViewScoped
public class Bean
{
private boolean visible;
public void setVisible(boolean visible)
{
this.visible = visible;
}
public boolean getVisible()
{
return this.visible;
}
public void onBeforeShowDialog(AjaxBehaviorEvent event)
{
visible = true;
}
public void onBeforeHideDialog(AjaxBehaviorEvent event)
{
visible = false;
}
}
Vista Codice:
<h:commandButton value="Show dialog">
<f:ajax listener="#{bean.onBeforeShowDialog}" render="dialog" />
</h:commandButton>
<p:dialog id="dialog" visible="#{bean.visible}">
content
<h:commandButton value="Hide dialog">
<f:ajax listener="#{bean.onBeforeHideDialog}" render="dialog" />
</h:commandButton>
</p:dialog>
Un secondo metodo dovrebbe anche funzionare è di JavaScript:
Per aggiungere in <h:head />
:
<h:outputScript library="primefaces" name="jquery/jquery.js" />
<script>
function centerAndShowDialog(dialog)
{
$(dialog).css("top",Math.max(0,(($(window).height() - $(dialog).outerHeight())/2) + $(window).scrollTop()) + "px");
$(dialog).css("left",Math.max(0, (($(window).width() - $(dialog).outerWidth())/2) + $(window).scrollLeft()) + "px");
dialog.show();
}
</script>
Vista Codice:
<p:commandButton id="basic" value="Show Dialog" onclick="centerAndShowDialog(dlg);" type="button" />
<p:dialog id="dialog" header="Dynamic Dialog" widgetVar="dlg" dynamic="true">
Content
</p:dialog>
Nota: Dal momento che non sto usando primefaces, non ho provato questo codice in modo spero che funziona bene, ma la l'idea è qui!
fonte
2013-05-16 17:42:35
Se il rendering della p completo: dialogo, vuol fare la differenza? Logicamente dovrebbe ricalcolare la sua posizione. –
Ho aggiunto 'dialogUpload' all'attributo' update' del mio pulsante di comando e dopo un upload sta riposizionando perfettamente la finestra di dialogo. Tuttavia, l'azione di aggiornamento lo sta chiudendo e devo aprire nuovamente la finestra di dialogo ogni volta che viene chiamato questo pulsante di comando. –