Cuidado com o timezone ao trabalhar com JSF 2

Se você, assim com eu, é um desenvolvedor Web então há grandes chances de você já ter gravado data e hora errada no banco de dados por causa do fuso horário (timezone), certo? Esse problema é muito comum quando desenvolvemos sistemas para Web, mas ele parece ser um pouco mais rotineiro ao trabalhar com JSF pois ele define um fuso horário padrão para seus conversores de data: UTC.

Apesar da boa intenção do JSF, essa definição padrão acaba complicando nossa vida e pior, só percebemos esse problema em produção, quando os dados já foram corrompidos – aí já era, né!. Mas não se preocupe, existem algumas práticas com JSF que podem te ajudar a contornar de forma simples e prática:

http://blog.triadworks.com.br/jsf-conversao-de-datas-e-problemas-com-fuso-horario

Além de entender o problema e aprender a resolvê-lo você também aprende algumas boas práticas sobre como trabalhar com fuso horário na sua aplicação Web, pois gerenciar múltiplos fusos horários não é tarefa trivial.

Conversores e validadores acessando beans do Spring

Não é incomum ter conversores ou validadores do JSF que precisem acessar o banco de dados ou mesmo outros recursos do sistema, como um webservice, por exemplo. A verdade que esta prática é muito utilizada quando implementamos nossos entity converters. Quando trabalhamos com Spring ou CDI nós temos todo o poder de um container de IoC/DI, o que nos possibilita injetar beans gerenciados em nossas classes ou mesmo managed beans. Contudo a especificação do JSF 2.x ainda não tem um suporte decente de DI para conversores, validadores e alguns outros componentes internos do framework.

Para contornar essa limitação, podemos gerenciar os conversores do JSF com o container do Spring ou CDI. Dessa forma ganhamos a possibilidade de injetar qualquer bean dentro dos conversores e aplicar qualquer recurso extra do container, segurança, caching, controle transacional etc. Para saber mais detalhes sobre como injetar beans em seus validadores ou conversores, não deixe de ler o último post de 2014 no blog dos desenvolvedores da TriadWorks.