Certo, vamos la:
Vamos supor que eu tenha uma classe Usuario, com id e nome. Na minha pagina eu tenho um datatable com usuarios, e um botão!
<p:outputPanel>
<!-- Renderizado caso não tenha nenhum user escolhido -->
<p:dataTable value="#{bean.listUsuarios}" var="usuario">
<p:column headerText="Usuario">
<h:outputText value="#{usuario.nome}" />
</p:column>
<p:column>
<p:commandButton value="Abrir cadastro">
<f:setPropertyActionListener value="#{usuario}" target="#{bean.selectedUser}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:outputPanel>
<p:dialog widgetVar="dlgUsuario" id="idDlgUsuario">
<h:form>
<h:outputText value="#{bean.selectedUser.nome}, selecionado!" />
</h:form>
</p:dialog>
Ai no bean :
//...
public void setSelectedUser(User user)
{
this.selectedUser = user;
// org.primefaces.context.RequestContext.getCurrentInstance() -> pega a "pagina atual"
// .execute() -> executa uma ação
// No primefaces, quando voce cria um dialog, ele gera um js, .show() e .hide() pro widgetVar, então
// dlgUsuario.show() -> Exibe o dlgUsuario.
// no caso de um botão, voce colocaria oncomplete="dlgUsuario.show"
// ja neste caso, a gente pega a pagina, e executa o comando dlgUsuario.show()!!
org.primefaces.context.RequestContext.getCurrentInstance().execute("dlgUsuario.show()");
}
//...