Solución:
Puede, utilizando el RequestContext
(o PrimeFaces
si está utilizando la versión 6.2 o superior) clase.
Suponga que tiene lo siguiente:
<p:dialog id="myDialogID" widgetVar="myDialogVar">
....
</p:dialog>
Así que la forma en que lo haces en el facelet en sí, es decir onclick=myDialogVar.show();
, se puede hacer lo mismo en su bean administrado así:
Para PrimeFaces <= 3.x
RequestContext context = RequestContext.getCurrentInstance();
context.execute("myDialogVar.show();");
Para PrimeFaces> = 4.xa PrimeFaces <6.2 (según @dognose y @Sujan)
RequestContext context = RequestContext.getCurrentInstance();
context.execute("PF('myDialogVar').show();");
Para PrimeFaces> = 6.2
PrimeFaces current = PrimeFaces.current();
current.executeScript("PF('myDialogVar').show();");
Esto es para usar diálogos específicos. Si solo necesita mostrar un mensaje sin dar preferencia a ningún cuadro de diálogo personalizado, puede hacerlo de esta manera:
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Message Title", "Message body");
// For PrimeFaces < 6.2
RequestContext.getCurrentInstance().showMessageInDialog(message);
// For PrimeFaces >= 6.2
PrimeFaces.dialog().showMessageDynamic(message);
También puede pasar argumentos y establecer devoluciones de llamada. Consulte los ejemplos de presentación en el enlace.
Ver también:
- Marco de diálogo Primefaces
Si está en Primeface 4.0 o superior:
RequestContext.getCurrentInstance().execute("PF('yourdialogid').show()");
La solución de Vrushank es correcta.
También hay otra forma: en su diálogo, vincule el atributo renderizado a un valor booleano de su bean y establezca el atributo visible en verdadero, así:
<p:confirmDialog
widgetVar="myDialog"
visible="true"
rendered="#{myBean.showMyDialog}">
En el oyente de acción en su bean, simplemente llame setShowMyDialog(true)
, y se mostrará un cuadro de diálogo (suponiendo que esta acción actualice su cuadro de diálogo). Este enfoque es útil si, por alguna razón, no desea que el HTML de su cuadro de diálogo se muestre cuando no es visible para el usuario. De esta manera, en su bean tiene acceso a la información, ya sea que su diálogo sea visible.
Otro beneficio de esta solución es que su diálogo no está oculto en la actualización ajax (del diálogo o de su padre).