Mostrar requiredMessage/validar form dentro de um dialog

Pessoal,

Estava fazendo meus cadastros em arquivos xhtml normais, que mostravam as mensagens de erro quando o usuário não preenchia um campo obrigatório. Porém, tive que alterar e coloquei dentro de dialogs, tanto a inclusão quanto a edição dos meus objetos, só que dentro do dialog as mensagens de erro - campos obrigatório não preenchdios - não aparecem. Se o usuário não preencher um campo obrigatório e clicar em salvar dentro do dialog, não aparece o erro, o form é submetido, o dialog é fechado e não acontece mais nada, não salva no BD. Mas quando eu abro o dialog, logo após a tentativa de inserção sem o preenchimento de campos obrigatórios, a mensagem de erro aparece.
Por que isso está acontecendo? Com evitar/consertar isso?

 <p:dialog header="Gerenciar categoria" widgetVar="manterCategoriaDialog" 
                      minWidth="650" minHeight="200" resizable="true" closable="true"                       
                      showEffect="slide" hideEffect="slide">
                
                <h:outputText value="Campos com (*) s&atilde;o de preenchimento obrigat&oacute;rio!"
                              style="font-size: 14px; font-style: italic;"/>
                <p:separator/>

                <h:form id="formManterCategoria" style="font-size: 15px;">                   

                    <p:focus for="descricao"/>                                                                  

                    <h:panelGrid id="dadosCategoria" columns="3">                

                        <!--Somente na edição dos dados da cateoria que o campo código é mostrado-->
                        <h:outputLabel for="codigo" value="C&oacute;digo:" styleClass="labelNegrito"
                                       rendered="#{categoriaController.categoria.id != null}"/>
                        <h:inputText id="codigo" value="#{categoriaController.categoria.id}" 
                                     disabled="true" size="10" rendered="#{categoriaController.categoria.id != null}"/>  
                        <p:column rendered="#{categoriaController.categoria.id != null}"/>

                        <h:outputLabel for="descricao" value="Categoria (*):"
                                       styleClass="labelNegrito"/>
                        <h:inputText id="descricao" value="#{categoriaController.categoria.descricao}"
                                     maxlength="30" size="50"
                                     required="true" 
                                     requiredMessage="Por favor, digite um nome para a categoria de produtos."/>  
                        <p:column/>

                        <h:outputLabel for="ativo" value="Ativa:"
                                       styleClass="labelNegrito"/>
                        <h:selectOneMenu id="ativo" value="#{categoriaController.categoria.ativo}">
                            <f:selectItem itemValue="true" itemLabel="Sim"/>
                            <f:selectItem itemValue="false" itemLabel="N&atilde;o"/>                        
                        </h:selectOneMenu>
                        <p:column/>                              

                    </h:panelGrid> 

                    <h:messages styleClass="erros"/>                                       

                    <p:separator/>                                

                    <p:commandButton image="ui-icon ui-icon-disk" value="Salvar"                                     
                                     actionListener="#{categoriaController.salvar}" ajax="false"/>                      
                    <p:commandButton image="ui-icon ui-icon-arrowthickstop-1-w" value="Voltar"
                                     onclick="manterCategoriaDialog.hide()"/>
                </h:form> 

            </p:dialog> 

C tu vai mexer com dialog você vai precisar utilizar ajax.

Ou seja, arranque fora o ajax=“false”
e coloque update no seu form/growl/message ou qualquer outro componente para exibir mensagem.

Valeu.

Nem tinha me tocado no ajax=false, é que trouxe o código do xhtml e coloquei no dialog. Valeu mesmo pela dica.
Só continua com um problema: quando eu abro o dialog e tento enviar campos obrigatórios em branco, aparece o erro, mas se eu fechar o dialog e abrir de novo, já abre com o erro. Tem como mudar isso?

Antes de abrir tenta dar um update no form do dialg. e coloca o botão voltar com immediate=“true”