@Path + JodaTime [Resolvido]

Olá pessoal

Estou tentando passar uma data (LocalDate do JodaTime) via path

Ele envia dessa forma:

/relatorio/2011-01-01/2011-01-11/12

na hora de receber:

@Path("/relatorio/{dataInicial}/{dataFinal}/{filial.id}") public void relatorio(LocalDate dataInicial, LocalDate dataFinal, Filial filial) {

O problema é que as datas vem nulas. O id da filial vem correto.

Obrigado

vc que está preenchendo a url ou ela está vindo assim de um redirect?

Eu que estou preenchendo:

“relatorio/”+dataInicial+"/"+dataFinal+"/"+filial.getId();

se vc está fazendo isso em java, vc poderia usar:

result.redirectTo(Controller.class).relatorio(dataInicial, dataFinal, filial.getId());

o problema é que o VRaptor só vai converter a data usando o estilo do locale. Se estiver como pt-BR a data deveria ser 02/03/2011. Daí vc vai ter que usar regexes para declarar as datas (por padrão o VRaptor não aceita / dentro da variavel da url)

outra coisa que vc pode fazer é criar um conversor pra esse formato de data

[quote]se vc está fazendo isso em java, vc poderia usar:

[/quote]

Eu estava fazendo assim, mas preciso abrir uma nova janela para a impressão, o que só consigo fazer diretamente via html. Ou seja, envio a url já montada.

Em relação a montar a url com datas como 01/01/2011 não vou ter problema com as barras?

Onde posso encontrar um modelo de conversor para o formato de data: 2011-01-01. Eu não tenho nem idéia de onde começar.

Obrigado.

crie a classe:

@Convert(LocalDate.class)
public class CustomLocalDateConverter extends LocalDateConverter {

    //delegate constructor

    public LocalDate convert(String value, Class<? extends LocalDate> type, ResourceBundle bundle) {
           if (value == null) return null;

           try {
               return LocalDate.fromDateFields(new SimpleDateFormat("yyyy-mm-dd").parse(value));
           } catch (FormatException e) {
                return super.convert(value, type, bundle);
           }
    }

}

Ou altere o locale da aplicação no web.xml.

<context-param> <param-name>javax.servlet.jsp.jstl.fmt.locale</param-name> <param-value>pt_BR</param-value> </context-param>

Lucas e Garcia, obrigado pela ajuda.

Pensei melhor e estou abrindo a nova janela antes da entrada dos dados para a geração do relatório.

Assim não vou precisar do converter e a solução ficou mais simples.