Problema com <p:dialog e Validação

Olá a todos,
depois de algum tempo sem trabalhar com JSF vou colocar a mão na massa novamente e então resolvi fazer alguns testes,nestes testes me deparei com um problema envolvendo p:dialog e validação.Já passei por esse problema anteriormente e consegui solucionar(https://groups.google.com/forum/#!topic/javasf/JJaZ-MaftJY/discussion) com primefaces 3.1,mas dessa vez não está dando certo(estou utilizando prime faces 3.3) a questão é:
1- quando clico em novo tento inserir um registro com o nome vazio, ele dá o erro de validação(tudo certo)
2- eu fecho essa dialog
3-clico de novamente em novo ou editar e o campo nome já está circundado em vermelho

Alguém sabe oque está acontecendo ,onde eu estou errando ou como posso solucionar este problema?

Agradeço desde já.

**********comarca.xhtml *******************


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"
       xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
        <title>Gerenciar Comarcas</title>
    </h:head>
    <h:body>
  
       <h:form id="mainForm">
     <p:outputPanel id="tablePanel">
         <p:dataTable value="#{comarcaMB.comarcas}" var="c" >
<p:column>
<f:facet name="header">Código</f:facet>
    #{c.id}
    </p:column>
<p:column>
<f:facet name="header">Descrição</f:facet>
    #{c.nome}
    </p:column>
<p:column>
<f:facet name="header"></f:facet>
                        <p:commandButton value="Editar" update=":formDialog:painelDialog" actionListener="#{comarcaMB.prepararAlterar}" process="@this" oncomplete="janelaComarca.show()" />
                </p:column>
</p:dataTable>
     </p:outputPanel>
           <p:commandButton value="novo"  process="@this"  oncomplete="janelaComarca.show()" update=":formDialog:painelDialog"  actionListener="#{comarcaMB.prepararAdicionar}"/>
    
</h:form>

        
<p:dialog id="dialog" header="Gerenciar Comarca" widgetVar="janelaComarca" resizable="false" modal="true" showEffect="slide">
    <p:ajax event="close" listener="#{comarcaMB.handleClose}"/>
     <h:form id="formDialog">
           <p:outputPanel id="painelDialog">
               <p:messages autoUpdate="true"/>
               <h:panelGrid columns="2">
<h:outputText value="Código" />
<h:outputText value="#{comarcaMB.comarca.id}" />
<h:outputText value="Nome" />
                                <p:inputText  value="#{comarcaMB.comarca.nome}" required="true"  requiredMessage="Campo Nome é Obrigatório"  />
</h:panelGrid>
           </p:outputPanel>
         <p:commandButton value="salvar" update=":mainForm:tablePanel" actionListener="#{comarcaMB.salvar}" oncomplete="handleLoginRequest(xhr, status, args)"/>
     </h:form>
</p:dialog> 
   

   <script type="text/javascript">  
    function handleLoginRequest(xhr, status, args) {  
        if(args.validationFailed) {  
            jQuery('#dialog').effect("shake", { times:3 }, 100);  
        } else {  
            janelaComarca.hide();  
             
        }  
    }  
</script> 
        
 
    </h:body>
</html>

***********************ComarcaMB *************


@ManagedBean
@ViewScoped
public class ComarcaMB {
    
    private Comarca comarca;
    private ListDataModel<Comarca>comarcas;
    private ComarcaDao dao;

  
    public ComarcaMB() {
    }
    
    
    @PostConstruct
    public void init(){
       
      setComarca(new Comarca());
      Session s = HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
dao = new ComarcaDao(s);
setComarcas((ListDataModel<Comarca>) new ListDataModel(dao.findAll()));
tx.commit();
s.close();  
    }
    
    
    
    public void prepararAdicionar(ActionEvent ae){
    
        setComarca(new Comarca());
        
    }
    
    
    public void prepararAlterar(ActionEvent ae){
    
        setComarca((Comarca) getComarcas().getRowData());
        
    }
    
    
    
    
    
    public void salvar(ActionEvent ae){
    
        
        Session s =  HibernateUtil.getSession();
Transaction tx = s.beginTransaction();
                dao = new ComarcaDao(s);
if(getComarca().getId()==0){
dao.save(getComarca());
}else{
dao.update(getComarca());
}
                setComarcas((ListDataModel<Comarca>) new ListDataModel(dao.findAll()));               
tx.commit();
s.close();      
    }
    
    public void handleClose(CloseEvent event) {
    
    System.out.println("Executado ao fechar dialog");
    this.comarca = new  Comarca();
    
    }
    
    
    @PreDestroy
    public void destroy(){
    
        
    }

   
    public Comarca getComarca() {
        return comarca;
    }

    
    public void setComarca(Comarca comarca) {
        this.comarca = comarca;
    }

    
    public ListDataModel<Comarca> getComarcas() {
        return comarcas;
    }


    public void setComarcas(ListDataModel<Comarca> comarcas) {
        this.comarcas = comarcas;
    }
    
 
}