Como trabalhar com data em campo simples
19/01/2012 07:46
0
Usando a tag de data do Grails é fácil, mas usando um cmapo "input" normal ainda não consegui!

Todo fórum que pesquiso ensina a formatar a data no "input". Até ai beleza... o problema é que quando chega no controlador diz que a data é inválida kkkkkkkkkk

Já mudei o padrão de data no "messages.properties", e nada :(

Achei um post de um cara que é a maior viagem:
http://www.dataworks-inc.com/site/blog/handling-date-parameters-in-grails

Não tem um jeito mais fácil de fazer isso? Achei um outro post de um cara que ensina de um jeito um pouco mais fácil (que não é nada fácil perto de todos os outros frameworks java que conheço), mas usando o Grails 2.0 e no meu caso o projeto é com 1.3.7.

Desde já agradeço.
Tags: data formatação conversão


0
É: este problema tá na lista em que o p=np se encontra :D

Não conheço solução fácil. O que costumo fazer é definir um padrão de formatação, que exponho de forma clara, explícita e BERRANTE para o usuário. Em seguida, uso o java.text.SimpleDateFormat no controlador mesmo.

Ou então, você pode também usar uma biblioteca javascript como o jQuery Validator, mas ai você fica dependente do Javascript.

Resumindo: até aonde vi, quando vejo este problema, a única coisa que vêm à minha cabeça é um Viking gritando pra mim "PREPARE TO SUFFER KICO!!!" :D


0
Olhe não eu me deparei com um problema parecido com o seu tipo ei adicionei um componente jQuery para data mas para passar para o controller eu tive que fazer assim:


Date tdataInicial = new Date().parse("dd/MM/yyyy",params.dataInicial)



espero que ajude :)


0
Muito obrigado, amigos.

Eu já havia conseguido resolver com essas soluções, mas não me conformava com elas. Já pensou uma entidade cheia de datas?

Eu achava impossivel um framework tão inteligente e moderno como Grails ter essa tremenda mancada de não formatar datas automaticamente. Imagine ainda se for fazer uma aplicação para rodar em vários idiomas a trabalheira que não seria? Pra ser sincero não conheço NENHUM outro framework JEE que te obrigue a fazer configurações manuais para datas.

Bem, mas como já sabemos, "não há bala de prata" heheheh

Abraços.


1
Se estiver usando o grails 2.0 tem:

def val = params.date('myDate', 'dd-MM-yyyy')
// or a list for formats
def val = params.date('myDate', ['yyyy-MM-dd', 'yyyyMMdd', 'yyMMdd'])

// or the format read from messages.properties via the key 'date.myDate.format'
def val = params.date('myDate')


Mais informações em:
http://grails.org/doc/latest/guide/introduction.html#whatsNew
procura por 'Easy Date Parsing'
20/01/2012 17:37


0
Excelente dica castiel!


0
Oi Yoshiriro.
Estou enfrentando o mesmo problema.
Você conseguiu resolver isso? Como?
Valeu.
25/06/2012 01:10


0
Olá, João.

Infelizmente não resolvi como queria. Converto um por um mesmo :(
Felizmente na minha aplicação não haviam muitos campos do tipo data. Se for o seu caso, sugiro usar um Filter, pois é o que faria se minha aplicação tivesse muitos campos do tipo data e não quisesse usar aquele componente de data do Grails.


0
Ok. Você pode me mostrar como você converteu a data, pois estou tentando aqui mas na hora de salvar a data aparece como inválida.

<input type="text" data-date-format="dd/mm/yyyy" id="datepicker" name="dataInicial">


String formato = "dd/MM/yyyy"
if(params.dataAdmissao){
funcionarioInstance.dataAdmissao = new SimpleDateFormat(formato).parse(params.dataAdmissao)
}


O controlador está recebendo a String no formato correto mas não sei porque não está salvando!
Obrigado.
25/06/2012 16:37


0
Tente...
funcionarioInstance.dataAdmissao = params.date('dataInicial', 'dd-MM-yyyy')


0
Ah, caso isso não funcione, crie uma variável Date e a preencha com isso e veja como ela fica (preferencialmente use o modo Debug se estiver usando alguma IDE)
Ex:
def dataTestes = params.date('dataInicial', 'dd/MM/yyyy')



Ah, e no post anterior era pra ser 'dd/MM/yyyy' e não 'dd-MM-yyyy' ^^'


0
Tentei das duas maneiras mas não está dando certo. Estou usando o Grails 1.3.7, será por isso?

outra coisa, postei o código errado na gsp. O correto é:

<input type="text" data-date-format="dd/mm/yyyy" id="datepicker" name="dataAdmissao">


Antes eu estava usando o plugin calendar e funcionava perfeito com esse código:

gsp:
<calendar:datePicker name="dataAdmissao" dateFormat="%d/%m/%Y" defaultValue="${new Date()}" value="${funcionarioInstance?.dataAdmissao}"/>


controlador:
def save = {
...
String formato = "dd/MM/yyyy"
if(params.dataAdmissao_value){
funcionarioInstance.dataAdmissao = new SimpleDateFormat(formato).parse(params.dataAdmissao_value)
}
funcionarioInstance.save(flush: true)
...
}
26/06/2012 20:23



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto