[RESOLVIDO] Vraptor: Validation + Ajax + Resource

7 respostas
gporpino

Olá,

Eu estava usando o validator no formato normal e estava funcionando com messages.properties,
mas precisei usar ele com ajax ai ele retorna o studentNotSelected e não a mensage que está no messages.properties.
O que estou fazendo de errado?

List<Message> errors = new Validations(){{
	that(studentEnrollment.getStudent().getId() != null, "validation","studentNotSelected");
}}.getErrors(ResourceBundle.getBundle("messages"));  
		
validator.addAll(errors);
//Message m = errors.get(0);
		
validator.onErrorUse(Results.json()).withoutRoot().from(errors).serialize();

7 Respostas

Lucas_Cavalcanti

gporpino, o ideal é vc usar assim, direto:

validator.checking(new Validations(){{  
    that(studentEnrollment.getStudent().getId() != null, "validation","studentNotSelected");  
}});

mesmo fazendo assim ele não usa o do messages.properties?

existe a chave studentNotSelected lá?

Lucas_Cavalcanti

ah, entendi o problema…

vc está usando o resultado em json. E ele serializa usando os campos dos objetos e não os getters, então ele não vai mostrar internacionalizado mesmo =(

vc pode usar isso em todo caso:

validator.onErrorSendBadRequest();

que já serializa os erros em JSON, se a requisição está pedindo um json (isso acontece qdo vc usa $.getJSON, $.get(…, “json”), etc)

dá pra resolver isso convertendo as mensagens pra validationMessage, ou criando um converter do XStream

abre uma issue lá no VRaptor reportando esse bug, por favor?

gporpino

Brother fiz o que vc falou…

mas o retorno json é 200 e não 400 (Bad Request);

Eu necessito que quando vinher erro venha 400 e quando vier ok venha 200.

Estou fazendo algo errado?

Lucas_Cavalcanti

isso é um bug que já foi corrigido, baixa por favor o último snapshot (o stable já está para ser lançado)
https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.4.0-SNAPSHOT/vraptor-3.4.0-20110922.220057-10.jar

gporpino

Mas eu uso o maven, como faço para mudar o jar?
tem como fazer?

Lucas_Cavalcanti

tem sim

coloque isso no pom:

<repositories>
		<repository>
			<id>sonatype</id>
			<name>sonatype</name>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
			<url>http://oss.sonatype.org/content/repositories/snapshots</url>
		</repository>
	</repositories>

e mude a versão do vraptor pra 3.4.0-SNAPSHOT

gporpino

Funfou!!

Criado 23 de setembro de 2011
Ultima resposta 27 de set. de 2011
Respostas 7
Participantes 2