如何显示对话框支持 bean?

How to display dialog backing bean?

我在查看对话时遇到了问题。我正在尝试 运行 bean 方法中的一个对话框,它是这样的:

nivelAcceso = login.getSeguridadManager().nivelAcceso(expediente.getTipoExpediente());

if (nivelAcceso == 0) {
    RequestContext context = RequestContext.getCurrentInstance();
    context.execute("Vista.show()");
}

如果 nivelAcceso = 0 执行对话框但你没有这样做,就好像对话框不执行命令我检查我页面上的 nivelAcceso 是否为 0 我有以下内容:

<p:column width="80">
    <f:facet name="header">
        <p:outputLabel value="Opciones"/>
    </f:facet>

    <p:commandLink value="Ver"
                   actionListener="#{verExpedienteController.abrirExpediente(expediente.id)}" />

</p:column>

<p:ajax event="rowDblselect"
        listener="#{verExpedienteController.abrirExpediente(verExpedienteController.expedienteSeleccionado.id)}"/>

我工作正常,但是当我给出 commandLink 而不是对话框打开时,如果这个 panelGrid

<p:panelGrid style="width: 100%" rendered="#{verExpedienteController.expediente eq null or verExpedienteController.nivelAcceso eq 0}">
    <p:row>
        <p:column style="text-align: center">
            <p:outputLabel value="#{verExpedienteController.expediente eq null? 'Disculpe, la Subserie no existe' : 'Disculpe, no posee permisos para ver este Expediente'}"/>
        </p:column>
    </p:row>

    <p:row>
        <p:column style="text-align: center">
            <p:commandButton value="Cancelar" action="BusquedaExpediente"/>
        </p:column>
    </p:row>
</p:panelGrid>

我想打开对话框而不是可能导致问题的 panelGrid。

我只能假设它是某种基于许可的,显示对话框?
如果是这种情况,您不想在批准之前呈现对话框,因为任何人都可以执行 widgetVar.show()。做这样的事情
<p:panel id="updateDialog"> <p:dialog rendered="#{bean.renderedBoolean}" visible="true"> dialog stuff </p:dialog></p:panel>

当你想显示对话框时用 =false 初始化 renderBoolean

if (nivelAcceso == 0) {  renderedBoolean=true;
    RequestContext context = RequestContext.getCurrentInstance();
    context.update("updateDialog");
}