Mensagens de erro aparecendo no dialog errado

Pessoal,

Tenho um dialog para cadastro de usuario. Dentro desse dialog, criei um link, que chama outro dialog. Para possibilitar a inserção de um novo setor, sem a necessidade de fechar tudo só pra cadastrar, ou seja, um atalho.
O problema é que quando eu clico no link do atalho (que está dentro de um dialog e chama outro), aparece as mensagens de erro no dialog inicial, como se eu estivesse dando um submit e ele encontrado alguns erros de validação. E quando eu dou o submit no dialog secundário (do atalho) as mensagens de erro aparecem no dialog inicial, até consigo fazer com que as mensagens de erro apareçam no dialog secundário (do atalho), mas elas continuam aparecendo no dialog inicial também e quando não tem erro, ele não salva (não dá submit).

O que será que pode ser?

Já alterei oncomplete, onsuccess, onerror, etc. Estava funcionando, sem problemas, de repente começou a acontecer isso.

Se alguém puder me ajudar.

Chamando o primeiro dialog:

<p:commandButton value="Incluir Novo" image="ui-icon-disk"
                                     alt="Incluir um novo usu&acute;rio" 
                                     title="Incluir um novo usu&aacute;rio"
                                     actionListener="#{usuarioController.prepararParaIncluir}"
                                     oncomplete="manterUsuarioDialog.show()"
                                     update=":formManterUsuario"/>  

Dialog 1:

<p:dialog header="Gerenciar usu&aacute;rio" widgetVar="manterUsuarioDialog" 
                      minWidth="480" 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-style: italic;"/>
                <p:separator/>

                <h:form id="formManterUsuario">                   

                    <p:focus for="nome"/>                                                                  

                    <table>
                        <tr>
                            <td>
                                <h:outputLabel for="codigo" value="C&oacute;digo:" styleClass="labelNegrito"
                                               rendered="#{usuarioController.usuario.id != null}"/>        
                            </td>
                            <td>
                                <h:inputText id="codigo" value="#{usuarioController.usuario.id}" 
                                             disabled="true" size="10" rendered="#{usuarioController.usuario.id != null}"/>  
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <h:outputLabel for="nome" value="Nome (*):" styleClass="labelNegrito"/>
                            </td>
                            <td>
                                <p:inputMask id="nome" value="#{usuarioController.usuario.nome}"
                                             mask="" size="55" maxlength="70"
                                             required="true" 
                                             requiredMessage="Por favor, digite o nome do usu&aacute;rio."/>  
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <h:outputLabel for="email" value="E-mail:" styleClass="labelNegrito"/>
                            </td>
                            <td>
                                <p:inputMask id="email" value="#{usuarioController.usuario.email}"
                                             mask="" size="32" maxlength="70"/>  
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <h:outputLabel for="login" value="Login (*):" styleClass="labelNegrito"/>
                            </td>
                            <td>
                                <p:inputMask id="login" value="#{usuarioController.usuario.login}"
                                             mask="" size="32" maxlength="30"
                                             required="true"
                                             requiredMessage="Por favor, informe o login."
                                             disabled="#{usuarioController.usuario.id != null}"/>  
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <h:outputLabel for="senha" value="Senha (*):" styleClass="labelNegrito"/>
                            </td>
                            <td>                                                                
                                <p:password id="senha" value="#{usuarioController.usuario.senha}"
                                            size="32" maxlength="30"
                                            required="#{usuarioController.usuario.id == null}"
                                            requiredMessage="Por favor, informe a senha."
                                            redisplay="false"
                                            feedback="false"/>                                                                 
                                <p:watermark for="senha" value="Preencher somente se quiser alterar"
                                             rendered="#{usuarioController.usuario.id != null}"/> 
                            </td>
                        </tr>  
                        <tr>
                            <td>                              
                                <h:outputLabel for="tipo" value="Tipo de usu&aacute;rio (*):" styleClass="labelNegrito"/>
                            </td>
                            <td>
                                <p:selectOneMenu id="autorizacao" value="#{usuarioController.usuario.autorizacao}" 
                                                 required="true"
                                                 requiredMessage="Por favor, informe o tipo de usu&aacute;rio.">
                                    <f:selectItem itemLabel="Selecione..."/>  
                                    <f:selectItem itemValue="ROLE_ADMIN" itemLabel="Admin"/>                       
                                    <f:selectItem itemValue="ROLE_REQ" itemLabel="Requisitante"/>                       
                                </p:selectOneMenu>                                                                                                                                                                                                             
                            </td>
                        </tr>
                        <tr>
                            <td>                              
                                <h:outputLabel for="setor" value="Setor (*):" styleClass="labelNegrito"/>
                            </td>
                            <td>
                                <p:selectOneMenu id="listaSetores" 
                                                 value="#{usuarioController.usuario.setor}" 
                                                 converter="setorConverter"
                                                 required="true"
                                                 requiredMessage="Por favor, informe o setor do usu&aacute;rio.">
                                    <f:selectItem itemLabel="Selecione..."/>  
                                    <f:selectItems value="#{setorController.listaSetoresParaCombobox}"/>                       
                                </p:selectOneMenu>                                                                

                                <p:spacer width="10"/>

                                <p:commandLink value="[+] Novo Setor"                                        
                                               title="Inlcuir um novo setor"                                               
                                               actionListener="#{setorController.prepararParaIncluir}"
                                               onstart="incluirSetorDialog.show();"
                                               update=":formNovoSetor"
                                               immediate="true"/>
                            </td>
                        </tr>
                        <tr>
                            <td>                              
                                <h:outputLabel for="ativo" value="Ativo (*):" styleClass="labelNegrito"/>
                            </td>
                            <td>
                                <p:selectOneMenu id="ativo" value="#{usuarioController.usuario.ativo}" 
                                                 required="true"
                                                 requiredMessage="Por favor, informe se o usu&aacute;rio está ativo.">
                                    <f:selectItem itemLabel="Selecione..."/>  
                                    <f:selectItem itemValue="true" itemLabel="Sim"/>
                                    <f:selectItem itemValue="false" itemLabel="N&atilde;o"/>                        
                                </p:selectOneMenu>      
                            </td>
                        </tr>                      
                    </table>  

                    <p:messages id="ss" autoUpdate="true" redisplay="true"/>                                                                                                                                               

                    <p:commandButton image="ui-icon-disk" value="Salvar" 
                                     id="salvarUsuario"
                                     actionListener="#{usuarioController.salvar}"
                                     update=":formManterUsuario"/>     

                    <p:commandButton image="ui-icon-close" value="Cancelar"
                                     onclick="manterUsuarioDialog.hide()"
                                     update=":formPrincipal"
                                     immediate="true"/>
                </h:form> 

            </p:dialog>

Chamando o dialog 2 (atalho):

<p:commandLink value="[+] Novo Setor"                                        
                                               title="Inlcuir um novo setor"                                               
                                               actionListener="#{setorController.prepararParaIncluir}"
                                               onstart="incluirSetorDialog.show();"
                                               update=":formNovoSetor"
                                               immediate="true"/>

Dialog 2:

<p:dialog header="Incluir um novo setor" widgetVar="incluirSetorDialog" 
                      minWidth="450" minHeight="100" resizable="true" closable="true"                       
                      showEffect="slide" hideEffect="slide">                                              

                <h:form id="formNovoSetor">

                    <p:focus for="nome"/>

                    <h:outputText value="Campos com (*) s&atilde;o de preenchimento obrigat&oacute;rio!"
                                  style="font-style: italic;"/>

                    <p:separator/>                    

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

                        <h:outputLabel for="nome" value="Setor (*):"
                                       styleClass="labelNegrito"/>
                        <p:inputMask id="nome" value="#{setorController.setor.nome}"
                                     mask="" maxlength="50" size="50"
                                     required="true" 
                                     requiredMessage="Por favor, digite um nome para o setor."/>  
                        <p:column/>

                        <h:outputLabel for="ramal" value="Ramal:"
                                       styleClass="labelNegrito"/>
                        <p:inputMask id="ramal" value="#{setorController.setor.ramal}"
                                     mask="" maxlength="5" size="10"/>  
                        <p:column/>

                        <h:outputLabel for="ativo" value="Ativo (*):"
                                       styleClass="labelNegrito"/>
                        <p:selectOneMenu id="ativo" value="#{setorController.setor.ativo}"
                                         required="true"
                                         requiredMessage="Por favor, informe se o setor está ativo.">
                            <f:selectItem itemLabel="Selecione..."/>
                            <f:selectItem itemValue="true" itemLabel="Sim"/>
                            <f:selectItem itemValue="false" itemLabel="N&atilde;o"/>                        
                        </p:selectOneMenu>
                        <p:column/> 

                        <h:outputLabel for="obs" value="Observa&ccedil;&otilde;es:"
                                       styleClass="labelNegrito"/>
                        <p:inputMask id="obs" value="#{setorController.setor.obs}"
                                     mask="" maxlength="100" size="50"/>  
                        <p:column/>

                    </h:panelGrid>                                                

                    <p:messages id="teste" autoUpdate="true" redisplay="true"/>       
                    
                    <br/>

                    <p:commandButton image="ui-icon-disk" value="Salvar"                                     
                                     id="salvarSetor"
                                     update=":formManterUsuario"
                                     actionListener="#{setorController.salvarDoDialog}"                                     
                                     oncomplete="incluirSetorDialog.hide();"/>                                             

                    <p:commandButton image="ui-icon-close" value="Cancelar"
                                     onclick="incluirSetorDialog.hide()"
                                     update=":formManterUsuario"
                                     immediate="true"/>

                </h:form>

            </p:dialog> 

Alguém pode me ajudar? Estou precisando resolver esse problema com urgencia

Pessoal,

Achei que podia ser problema dentro dos formulários, alterei isso, coloquei tudo dentro de um único formulário. Já tentei mudar para oncomplete, onsuccess, tiro e coloco o update, mudo isso também, mas nada funciona corretamente.
Ou mostra a mensagem no dialog abaixo (errado) ou não salva, mas mostra a mensagem no dialog certo.

Agradeço, qualquer tipo de ajuda.

FacesMessage Enhancements

Nesse post tem uma parte sobre Targetable Messages que servem pras mensagens aparecerem somente no componente que você escolher.

Valeu. Vou dar uma olhada.

Não funcionou essa dica. Além de não ter reconhecido o atributo (‘for’ e ‘escape’). Eu não adiciono as mensagens de erro na mão, como mostra o exemplo

context.addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "Always bet on Prime"));

Eu simplesmente declaro o componente p:messages e as mensagens dos campos requeridos, nada mais, o resto é com o PrimeFaces/JSF