RESOLVIDO - [JSF] Não abrir a popup quando há FacesMessage para exibir

Bom dia, pessoal.

Eu tenho o seguinte código:

<p:toolbar>
    <p:toolbarGroup align="left">
        <p:menuButton value="Arquivo" >
            <p:menuitem     value="#{systemMsg['action.new.label']}"
                            actionListener="#{paisMB.executePrepareAdd}" 
                            update="insertForm" 
                            oncomplete="#{p:widgetVar('insertDialog')}.show()" />
                            
            <p:menuitem     value="#{systemMsg['action.edit.label']}"
                            actionListener="#{paisMB.executePrepareUpdate}" 
                            update="editionForm" 
                            oncomplete="#{p:widgetVar('editionDialog')}.show()" />
                            
            <p:menuitem     value="#{systemMsg['action.delete.label']}"     
                            actionListener="#{paisMB.executePrepareDelete}"                                  
                            update="deleteForm"
                            oncomplete="#{p:widgetVar('deleteDialog')}.show()" />
            
        </p:menuButton>
        
    </p:toolbarGroup>
</p:toolbar>

Como fazer para que nenhum desses itens de menu abram as popups correspondentes se eu coloco um FacesMessage no contexto do jsf?

Obrigado pela atenção

Não sei se entendi direito, mas ai voce ta pedindo pra sempre que concluir a ação ser chamado o dialog de confirmação, tente mudar a propriedade de oncomplete para onclick

oncomplete="#{p:widgetVar('deleteDialog')}.show()" />

Tentei mudar pra onclick, mas não resolveu não

<p:toolbar>
    <p:toolbarGroup align="left">
        <p:menuButton value="Arquivo" >
            <p:menuitem     value="#{systemMsg['action.new.label']}"
                            actionListener="#{paisMB.executePrepareAdd}" 
                            update="insertForm" 
                            onclick="#{p:widgetVar('insertDialog')}.show()" />
                            
            <p:menuitem     value="#{systemMsg['action.edit.label']}"
                            actionListener="#{paisMB.executePrepareUpdate}" 
                            update="editionForm" 
                            onclick="#{p:widgetVar('editionDialog')}.show()" />
                            
            <p:menuitem     value="#{systemMsg['action.delete.label']}"     
                            actionListener="#{paisMB.executePrepareDelete}"                                  
                            update="deleteForm"
                            onclick="#{p:widgetVar('deleteDialog')}.show()" />
                            

            <p:menuitem     value="#{systemMsg['action.print.label']}" 
                            ajax="false" async="false"
                            actionListener="#{paisMB.executePrintReportListing}"  
                            />
            
        </p:menuButton>
        
    </p:toolbarGroup>
</p:toolbar>

Desculpem, pessoal, consegui resolver. Tive que utilizar uma função javascript e colocar um parâmetro no escopo de “Flash” do JSF.

Segue o código final e uma screenshot de tela pra vocês verem

Minha toolbar

<p:toolbar>
    <p:toolbarGroup align="left">
        <p:menuButton value="Arquivo" >
            <p:menuitem     value="#{systemMsg['action.new.label']}"
                            actionListener="#{paisMB.executePrepareAdd}" 
                            update="gridMessages,insertForm" 
                            oncomplete="handleHideWidget(xhr, status, args, #{p:widgetVar('insertDialog')})"
                            />
                            
            <p:menuitem     value="#{systemMsg['action.edit.label']}"
                            actionListener="#{paisMB.executePrepareUpdate}" 
                            update="gridMessages,editionForm" 
                            oncomplete="handleHideWidget(xhr, status, args, #{p:widgetVar('editionDialog')})"
                            />
                            
            <p:menuitem     value="#{systemMsg['action.delete.label']}"     
                            actionListener="#{paisMB.executePrepareDelete}"                                  
                            update="gridMessages,deleteForm"
                            oncomplete="handleHideWidget(xhr, status, args, #{p:widgetVar('deleteDialog')})"
                            />
                            

            <p:menuitem     value="#{systemMsg['action.print.label']}" 
                            ajax="false" async="false" update="gridMessages"
                            actionListener="#{paisMB.executePrintReportListing}"  
                            />
            
        </p:menuButton>
        
    </p:toolbarGroup>
</p:toolbar>

Onde deveriam aparecer as mensagens de erro:

<p:messages globalOnly="true" id="gridMessages" showDetail="true" />

Função javascript que utilizei:

function handleShowWidget(xhr, status, args, widget) {
	if (! args.validationFailed && ! args.exceptionThrown ) {
		widget.show();
	}
}

Screenshot de tela:

Uploaded with ImageShack.us