Olás,
Uso o componente p:dialog para uma tela de cadastro. Nessa tela, eu tenho uns campos required, e um botão de salvar:
<p:commandButton id="btn_salvar_envolvido" type="submit" action="#{envolvidoBean.salvar}" update="@form" oncomplete="dlg_cadastrar_envolvido.hide();" value="Salvar" />
No botão tenho oncomplete="dlg_cadastrar_envolvido.hide(). Porém qdo não preencho um campo required, o diálogo é fechado, e a msg de validação aparece na tela de baixo.
Queria uma forma, de não fechar o diálogo, caso um campo required não tenha siudo preenchido.
Obrigado 
ja tentou com o onsuccess ?
onsuccess="dlg_cadastrar_envolvido.hide()"
Você pode fazer igual ao do exemplo de login do primefaces.
Eu procurei uma solução mais simples,pois quero fazer isso também, mas não encontrei.
Utilizar o RequestContext do primefaces é a melhor coisa a se fazer mesmo, é elegante e você adquire muito mais domínio sobre as ações no teu sistema.
Obrigado a todos pelas respostas. 
Não sei se vc resolveu mas eu uso assim:
oncomplete="if(!args.validationFailed){minhaDialog.hide();}"
[quote=Polverini]Não sei se vc resolveu mas eu uso assim:
oncomplete="if(!args.validationFailed){minhaDialog.hide();}"
[/quote]
Olá Polverini. Sua sugestão funcinou perfeitamente. Muito obrigado!!!