[Vraptor 4] Como usar Results.json() com o status code BadRequest

219 views
Skip to first unread message

Fabiano Almeida

unread,
Feb 7, 2017, 10:19:29 AM2/7/17
to caelum-...@googlegroups.com
Prezados, boa tarde.

Estava pesquisando e encontrei esses dois links:



Tentei usar o do primeiro exemplo, mas não funciona. Ele retorna uma String com o endereço para uma possível página JSP.

Ou seja, quando o código identifica essa linha:

resultado.use(Results.http()).setStatusCode(HttpServletResponse.SC_BAD_REQUEST);

Ele nem chega na linha:

resultado.use(Results.json()).withoutRoot().from(respostaService).serialize();

Como consigo retornar a mensagem de badRequest usando JSON?

Atenciosamente,

Fabiano Almeida.

Ivo Sestren Junior

unread,
Feb 7, 2017, 10:38:20 AM2/7/17
to caelum-...@googlegroups.com
Bom, não é bem exatamente o que procuras.
Mas extendi a classe Validator para adicionar um retorno em JSON referente aos erros.

Segue a minha classe para você ter uma ideia.


import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.proxy.Proxifier;
import br.com.caelum.vraptor.validator.*;
import br.com.caelum.vraptor.view.Results;
import br.com.caelum.vraptor.view.ValidationViewsFactory;
import br.com.mng.sisclinica.sis2000.errors.*;

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;
import javax.validation.MessageInterpolator;
import java.util.Locale;
import java.util.ResourceBundle;

@Specializes
public class ValidatorResult extends DefaultValidator {

/**
* @deprecated CDI eyes only.
*/
protected ValidatorResult() {
this(null, null, null, null, null, null, null, null, null);
}

@Inject
public ValidatorResult(Result result, ValidationViewsFactory factory, Outjector outjector, Proxifier proxifier,
ResourceBundle bundle, javax.validation.Validator bvalidator, MessageInterpolator interpolator, Locale locale,
Messages messages) {
super(result, factory, outjector, proxifier, bundle, bvalidator, interpolator, locale, messages);
}

public ValidatorResult onErrorRender() {
this.onErrorUse(Results.json()).from(this.getErrors(), "errors").serialize();
return this;
}

public Validator addIf(boolean expression, br.com.mng.sisclinica.sis2000.errors.Error error) {
this.addIf(expression, new I18nMessage(error.getScope(), error.getMessage()));

return this;
}

public Validator addIf(boolean expression, br.com.mng.sisclinica.sis2000.errors.Error error, Object... parameters) {
this.addIf(expression, new I18nMessage(error.getScope(), error.getMessage(), parameters));

return this;
}
}

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vraptor+unsubscribe@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-vraptor@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Fabiano Almeida

unread,
Feb 9, 2017, 3:43:12 PM2/9/17
to caelum-...@googlegroups.com
Pessoal,

Alguém tem uma dica de como fazer esse retorno ocorrer do bad request via json?

Obrigado de antemão.

Atenciosamente,

Fabiano Almeida.
Reply all
Reply to author
Forward
0 new messages