vRaptor Validator - problemas para retornar de uma requisição AJAX
6 respostas
vhmolinar
Pessoal bom dia,
estou tentando utilizar o validator para validator uma requisiçaõ ajax mas estou tendo problemas. Teoricamente seria simples a resposta: " não faz diferença se é ajax ou não…" . No entanto não está sendo bem assim. Quando eu faço meu post ajax
eu deixo setado meu callback para receber um jSon, como podem ver. No entanto o validator não retorna um json, ele retorna uma JSP completa.
Dei uma olhada na documentação do vRaptor e não encontrei nada sobre, então
alguém saberia me dizer como faço para o validator retornar um jSon?
final boolean validTimes = new SimpleDateFormat("HH:mm:ss").parse(startTime).before( new SimpleDateFormat("HH:mm:ss").parse(endTime) );
:shock: :shock: Processador de 2.5Ghz é luxo!
Opa blz?
Então… Se você tiver uma maneira(comprovada) mais ágil de comparar duas informações que representam uma hora no padrão “HH:mm:ss” posta aí por favor.
G
garcia-jj
vhmolinar:
garcia-jj:
final boolean validTimes = new SimpleDateFormat("HH:mm:ss").parse(startTime).before( new SimpleDateFormat("HH:mm:ss").parse(endTime) );
:shock: :shock: Processador de 2.5Ghz é luxo!
Opa blz?
Então… Se você tiver uma maneira(comprovada) mais ágil de comparar duas informações que representam uma hora no padrão “HH:mm:ss” posta aí por favor.
Você cria duas vezes o mesmo objeto: new SimpleDateFormat(“HH:mm:ss”). Você pode instanciar uma vez associando à alguma variável e usar a mesma instância quantas vezes precisar.
Além disso o Vraptor já faz o parse das datas “automagicamente”. Para isso basta deixar seu método com os tipos corretos:
public void foo(Date startTime, Date endTime) {
[...] startTime.before(endTime);
}
:thumbup:
vhmolinar
garcia-jj:
vhmolinar:
garcia-jj:
final boolean validTimes = new SimpleDateFormat("HH:mm:ss").parse(startTime).before( new SimpleDateFormat("HH:mm:ss").parse(endTime) );
:shock: :shock: Processador de 2.5Ghz é luxo!
Opa blz?
Então… Se você tiver uma maneira(comprovada) mais ágil de comparar duas informações que representam uma hora no padrão “HH:mm:ss” posta aí por favor.
Você cria duas vezes o mesmo objeto: new SimpleDateFormat(“HH:mm:ss”). Você pode instanciar uma vez associando à alguma variável e usar a mesma instância quantas vezes precisar.
Além disso o Vraptor já faz o parse das datas “automagicamente”. Para isso basta deixar seu método com os tipos corretos:
public void foo(Date startTime, Date endTime) {
[...] startTime.before(endTime);
}
:thumbup:
Aí que ta, eu não recebo um Date no servidor, é uma informação referente a hora, não data. Portanto recebo uma simples String.
Agora sobre a criação de 2 objetos, beleza, concordo. Mas também não seria nada tão escandaloso a ponto de você falar como se a aplicação, por causa de 1 objeto a mais, sugaria todo o processamento da máquina.
De qualquer forma valeu por ter dado a opnião
G
garcia-jj
Se você quer usar apenas APIs do Java você pode usar o java.util.Date que contém Date + Time. Seguindo meu exemplo anterior você pode usar os campos de data zerados e time com os valores. Assim você não precisa ficar manipulando Strings nem formatando manualmente os valores.
Outra opção é usar o joda-time, que possui objetos separados de Date e Time. Além disso o Vraptor possui conversores built-in para eles.
public void foo(LocalTime startTime, LocalTime endTime) {
final boolean validTimes = startTime.before(endTime);
List<Message> errors = new Validations(generateBundle()) {{
that(validTimes, "erro", "errors.LogReaderInvalidTimes");
}}.getErrors();
validator.addAll(errors);
validator.onErrorUse(json()).from(errors, "errors").serialize();
}