VRaptor 3, problema com Validator [RESOLVIDO]

Bom dia,

Estou trabalhando com o VRaptor 3.3.1 e estou tendo um problema com o Validator

Tenho um cadastro que tem vários campos, mas apenas o Nome e o Telefone são obrigatórios.

Meu código está assim:

@Restrito(nivelPoder=TabelaPermissoes.CADATRAR_AGENTES)
	public void cadastrarAgente(Agente agente) throws Exception{
		try {
			this.verificarCamposObrigatorios(agente);
			validator.onErrorForwardTo(this).formularioAgente();
			
			agenteDao.inserir(agente);
			
			result.include("msg","Agente cadastrado com sucesso!");
			result.redirectTo(PrincipalController.class).index();
			
		} catch (Exception e) {
			validator.add(new ValidationMessage(ConfigurarMensagemDeErro.configurarMensagem(e.getMessage()), "erro"));
			validator.onErrorForwardTo(this).formularioAgente();
		}
	}

Estou validando assim:

private void verificarCamposObrigatorios(Agente agente) throws Exception{
		if (agente.getNome() == null || agente.getNome().length() < 5){
			validator.add(new ValidationMessage(
					"O campo Nome é obrigatório e precisa ter mais de 5 letras.", "agente.nome"));
		}
		if (agente.getTelefone().equals("") ){
			validator.add(new ValidationMessage(
					"O campo Telefone é obrigatório.", "agente.telefone"));
		}	
	}

O problema é que ele esta sempre caindo no catch e esta retornando esta mensagem:

[ValidationMessage{category=endereco.cidade.codigo, message=???is_not_a_valid_integer???, parameters=null}]

Porém eu não quero que a cidade seja obrigatório.

Grato.

atilaraphael, não coloque try…catch exception em volta desse código… o validator do VRaptor lança uma exceção qdo dá erro de validação, e vc está capturando a exceção.

vc tem algum campo do seu formulário que passa o endereco.cidade.codigo? se sim, qual é o valor que está sendo passado?

o VRaptor adiciona um erro de validação qdo dá algum erro de conversão (exemplo passando abc pra um campo que é numérico)

Olá Lucas,

A cidade é um select

Está assim:

<select name="agente.endereco.cidade.codigo" id="cidade">
       <option>Selecione...</option>			      				
</select>

Este select e carregado quando seleciono uma UF via ajax.

$('#uf').change(function(){
		$('#cidade option').remove();
		$('<option value="0">Selecione</option>').appendTo('#cidade');
	        var value = $('#uf').val();  
	        $.ajax({
	        	url: '../cidade/'+ value,      
	            dataType: 'json',  
	            success: function(json) {
	                var cidade = json.list;  
	                for(var i in cidade) {
	                    $('<option value="' + cidade[i].codigo + '">' + cidade[i].nome + '</option>').appendTo('#cidade');
	                }  
	            }
	        });   
	});

Mas como eu disse antes, a cidade não é obrigatória.

então faça:

<option value="">Selecione...</option> 

se vc não fizer isso ele vai mandar na requisição:

agente.endereco.cidade.codigo = Selecione...

e por isso dá erro de conversão

Muito obrigado Lucas, resolveu meu problema.