[RESOLVIDO] Validação Vraptor3

6 respostas
lucas4p

Sou iniciante com o Vraptor3, porém estou utilizando o validator com o resourceBudle para especificar o caminho de um arquivo.propreties.
Até ai tudo bem, porém quando faço as validações as mensagens presente do arquivo especificado são geradas, noentanto aparece duas mensagens de validação que eu não sei de onde vem, e por isso não consigo add no banco.

Alguém poderia me ajudar.

Area

@Id
	@GeneratedValue
	@Column(name="ID")
	private int id;
	
	@Column(name="NUMCOLABORADORES")
	private int numberEmployee =0;
	
	@Column(name="NOME")
	private String name;
	
	@Column (name="DESCRICAO")
	private String description;
	
	@Column (name="ID_AREAMACRO")
	private int areaMacro = 0;
	
	@Column (name="ID_USUARIO")
	private int responsable = 0;
	
	@Column (name="ID_EMPRESA")
	private int company = 0;
	
	@Column (name="existe")
	private int status = 0;

AreasController:

this.validate.validationArea(area);		
this.areaDao.save(area);

Classe minha Validate

private ResourceBundle starFile()
	{
		Locale lDefault = Locale.getDefault();
		ResourceBundle lrbBundle = ResourceBundle.getBundle("br.com.labgti.pm.properties.validation",lDefault);
		return lrbBundle;
	}
	
	
	public void validationArea(final Area aArea)
	{
		ResourceBundle  lrbBundle = starFile();
		this.validator.checking(new Validations(lrbBundle){{
			that(aArea.getName() != null && aArea.getName().length() >=3,"area.name","areaName");
			that(aArea.getNumberEmployee() != 0 ,"area.numberEmployee","areaNumberEmployee");
			that(aArea.getResponsable() != 0,"area.responsable","areaResponsable");	
			that(aArea.getAreaDad() != 0,"area.areaDad","areaAreaDad");
			that(aArea.getCompany() != 0,"area.company","areaCompany");
			that(aArea.getDescription() != null,"area.description","areaDescription");
			that(aArea.getStatus() != 0, "area.status","areaStatus");
		}});
		this.validator.onErrorUse(page()).of(AreasController.class).form();
	}

AreaDao

public void save(Area area) {
		Transaction tx = this.session.beginTransaction();
		this.session.save(area);
		tx.commit();
	}

Arquivo validation_pt_BR.properties

areaName=O nome da area é obrigatório e precisa ter mais de 3 letras.
areaNumberEmployee=O campo número de funcionários é obrigatorio.
areaResponsable=O campo responsável pela area é obrigatório.
areaAreaMacro=O campo Area Macro e obrigatório.
areaCompany=A area precisa pertencer a uma empresa.
areaDescription=Favor descrever a area.

Mensagen gerado

* area.areaDad - ???is_not_a_valid_integer???
    * area.responsable - ???is_not_a_valid_integer???

Essas mensagens acima não sei de onde vem.

Grado desde já.

6 Respostas

Lucas_Cavalcanti

area.areaDad é um inteiro? vc tá passando na requisição algo diferente de inteiro?

tipo:
area.areaDad=asdfasdf
ou ainda
area.areaDad=1,10

isso possivelmente seja um erro de conversão

lucas4p

Estou setando tudo int no metodo que add

@Post @Path("/areas")
	public void add(final Area area)
	{
		area.setAreaDad(1);
		area.setCompany(1);
		area.setNumberEmployee(2);
		area.setResponsable(1);
		area.setStatus(1);
		this.validate.validationArea(area);		
		this.areaDao.save(area);
		
	}

O resto eu seto no form.

Lucas_Cavalcanti

tem algum input no form com o name=“area.areaDad”?

lucas4p

Era isso mesmo chará matou a charada.

Os dois campos existiam no form, aonde estava causando a as mensagens.

Obrigado

Porém não entendi pq ainda era identificado os valores não inteiro se eu estava sentando o objeto depois da requisição?

Lucas_Cavalcanti

antes de passar pela sua lógica, o VRaptor precisa criar o objeto area com os parâmetros que vieram na requisição.

ou seja, o erro de validação é colocado antes da sua lógica ser chamada

lucas4p

Valeu Lucas pela explicação.

Criado 22 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 6
Participantes 2