[RESOLVIDO] VRaptor - Forma de validação

tb falei numa msg anterior:

http://www.guj.com.br/java/293030-vraptor---forma-de-validacao/2#1559012

só adicionar erros de validação.

E como eu faço pra pegar essa mensagem na tela la no success ou no error ? ?

success: function(coisa) {
   // coisa é o retorno de sucesso
},
error: function(erros) {
   // só pegar esse erros e fazer o que vc quiser
}
 function formAjaxSubmit()
    {
        $.ajax({
            type: "POST",
            url: "/network/add",
            data: {
                "p_network.name" : $("#nomeRede").val(),            
                "p_network.comments": $("#comentarioRede").val(),
                "p_network.baseIP": ip2long($("#ipRede").val()),
                "p_network.mask": ip2long($("#mascaraRede").val()), 
                "p_network.VLanID": $("#vlanIDRede").val(),
                "p_network.gateway": ip2long($("#gatewayRede").val()),
                "p_network.dns": $("#dnsRede").val()
            },
            success: function(success) {
                alert("ok");
            },
            error: function(error) {
                alert("Erro: "+ error);
            }
        })
    }
@Restrict
    @Post("/network/add")
    public void addNetwork(Network p_network)
    {                
         if(NETWORK_SERVICE.checkExistentNetwork(p_network.getName())) 
         {
            VALIDATOR.add(new ValidationMessage("Nome de rede existente.", "error")); 
                        
         }
         else
         {
            RESULT.nothing();
         }

    }

Ta imprimindo o object como faço pra pegar a mensagem que coloquei ali ? Essa era a pergunta.
Tem algo de errado nisso ?

Ficaria assim o seu controller:


if (NETWORK_SERVICE.checkExistentNetwork(p_network.getName())) {
	validator.add(new ValidationMessage("Nome de rede existente.", "error"));
}
validator.onErrorSendBadRequest();
result.nothing();

e o seu ajax ficaria assim:

function formAjaxSubmit(){
    //....
    success: function(success) {  
         alert("ok");  },
    statusCode: {
	400: function(data) {
	var resposta = JSON.parse(data.responseText);
        //faz qualquer coisa com a resposta... 
    }
}

Beleza …
Acho que agora eu entendi … mas fiz esses passos ai e não funcionou ainda.

 function formAjaxSubmit()
    {
        $.ajax({
           //....
            success: function(success) {
                alert("Ok");
            },
            statusCode: {
                400: function(data)
                {
                    var response = JSON.parse(data.responseText);
                    alert("Erro:"+response);
                }
            }           
        })
    }
  @Restrict
    @Post("/network/add")
    public void addNetwork(Network p_network)
    {                
         if(NETWORK_SERVICE.checkExistentNetwork(p_network.getName())) 
         {
            VALIDATOR.add(new ValidationMessage("Nome de rede existente.", "error"));                         
         }
         VALIDATOR.onErrorSendBadRequest();  
         RESULT.nothing;
         //...

ele chega a passar pelo controller?

Ta passando sim .

Tive que alterar só o endereço no ajax de “/network/add” para "network/add"
Mas ainda a mensagem não ta sendo exibida.

posta o código!

 function formAjaxSubmit()
    {
        $.ajax({
            type: "POST",
            url: "network/add",
            data: {
                "p_network.name" : $("#nomeRede").val(),            
                "p_network.comments": $("#comentarioRede").val(),
                "p_network.baseIP": ip2long($("#ipRede").val()),
                "p_network.mask": ip2long($("#mascaraRede").val()), 
                "p_network.VLanID": $("#vlanIDRede").val(),
                "p_network.gateway": ip2long($("#gatewayRede").val()),
                "p_network.dns": $("#dnsRede").val()
            },
            success: function(success) {
                alert("Ok");
            },
            statusCode: {
                400: function(data)
                {
                    var response = JSON.parse(data.responseText);
                    alert("Erro:"+response);
                }
            }           
        })
    }
@Restrict
    @Post("/network/add")
    public void addNetwork(Network p_network)
    {                
         if(NETWORK_SERVICE.checkExistentNetwork(p_network.getName())) 
         {
            VALIDATOR.add(new ValidationMessage("Nome de rede existente.", "error"));                         
         }
         VALIDATOR.onErrorSendBadRequest();  
         RESULT.nothing();
         
//        NETWORK_SERVICE.addOrUpdateNetwork(p_network);
//        RESULT.nothing();
    }

troca tudo por:

$.getJSON("network/add", 
     {  
        "p_network.name" : $("#nomeRede").val(),              
        "p_network.comments": $("#comentarioRede").val(),  
        "p_network.baseIP": ip2long($("#ipRede").val()),  
        "p_network.mask": ip2long($("#mascaraRede").val()),   
        "p_network.VLanID": $("#vlanIDRede").val(),  
        "p_network.gateway": ip2long($("#gatewayRede").val()),  
        "p_network.dns": $("#dnsRede").val()  
     }).success(function(success) {  
         alert("Ok");  
     }).error(function(data) {  
               alert("Erro:"+data);              
     }) ; 

e troque de @Post("/network/add") pra @Get("/network/add")

E é correto fazer isso usando Get ? formulários de cadastro do tipo não deveriam ser requisições Post não ?

Funfou porém a mensagem de erro ta “Erro: Object [objetc]” … algo do tipo.

O que ? … Falei besteira ? kkkkk

n, apenas respondi atrasado, n tinha visto q o lucas tinha respondido! rs

apareceu [object Object] pq é um json… um objeto javascript…

pra vc imprimir as mensagens vc pode fazer algo como:

.error(function(messages) {
     $(messages).each(function() {
         alert(this.message);
     });
});

Beleza… agora ta correto.
Mas a mensagem exibida esta sendo “Undefined”

E volta a pergunta … é correto usar requisições do tipo Get para cadastro e não Post ?

troque o alert por console.log(messages) e veja isso no console do browser (Developer tools no Chrome, Firebug no Firefox)

No final ta assim

responseText:"{“errors”: [{“message”: “Nome de rede existente.”,“category”: “error”}]}", status:400, statusText:“Bad Request”})

Interessante isso … usava essa ferramente mas não com log e console assim.

E ai ?