Problema com rich:calendar do Richfaces e timezone

Olá =)

Estou tendo problemas com o rich:calendar e timezones.
Quando tento selecionar o dia 17 de outubro de 2010(17/10/2010), ele vai pra 16 de outubro de 2010(16/10/2010) !

Ví que este tipo de problema é causado pelo horário de verão, então meu projeto está assim:

faces-config.xml

<application> <locale-config> <default-locale>pt_BR</default-locale> <supported-locale>pt_BR</supported-locale> </locale-config> </application>

Managed Bean

[code]public class TestBean {

private String meetingDate;
private Locale locale = new Locale("pt", "BR");
private TimeZone timeZone = TimeZone.getTimeZone("America/Sao_Paulo"); 

public TimeZone getTimeZone() {
    return timeZone;
} 

public Locale getLocale() {
     return locale;
 } 

public String getMeetingDate() {
    return meetingDate;
} 

public void setMeetingDate(String meetingDate) {
    this.meetingDate = meetingDate;
} 

}[/code]

JSP

<rich:calendar  value="#{testBean.meetingDate}" timeZone="#{testBean.timeZone}"  locale="#{testBean.locale}" datePattern="dd/MM/yyyy">
    <f:convertDateTime  timeZone="#{testBean.timeZone}" locale="#{testBean.locale}"  pattern="dd/MM/yyyy" />
</rich:calendar>

Alguma idéia do que pode ser ? Vejo que já configurei tudo que era possível.
Inclusive no site do Richfaces também ocorre o problema:
http://livedemo.exadel.com/richfaces-demo/richfaces/calendar.jsf

Por incrível que pareça isso é um Bug do Javascript. Aposto que você está usando Windows, tente desabilitar o horário de verão da sua máquina e você vai ver.
Eu resolvi recentemente esse caso mas de um componente de Calendário chamado DLCalendar, adicionei uma hora quando criava uma data.

Tem até discusão aqui no GUJ:

http://www.guj.com.br/posts/list/142937.java

Tente usar, uma versão mais nova do Richfaces, qual vc está usando?

Fala fabiomazzo
Então, estou usando a ultima versão estável do Richfaces, a 3.3.3
Adicionar uma hora até funciona, mas ai teria que mexer na API, não queria chegar neste nivel, mesmo porque as politicagens daqui não permitiriam.

Será que não tem um jeito menos gambiarra de se fazer isso ? Tipo… forçar ele a usar o TimeZone ou algo do tipo ?

Valeu

Conseguiu? Se conseguir e puder postar aqui…

Até consegui, mas não da maneira que eu queria.
Dentro do rich:calendar, coloquei: ondateselected="fixDate();"

E criei um função javascript:

[code]function fixDate(){
calendar = $(‘calendarForm:calendar’).component;
hour = calendar.getSelectedDateString(“HH”);

if(hour == '23'){
	calendar.selectedDate.setDate(calendar.selectedDate.getDate() + 1);
}

}[/code]

Mas acho um absurdo um framework como o RichFaces, que é um dos mais famosos pra JSF saber deste problema a tanto tempo(tem bugs abertos no jira sobre isso) e não resolver.

Ola andre_a_s,

Tive exatamente este mesmo problema. Para resolver, acrescentei uma configuração de timezone diretamente no comando de inicialização do servidor de aplicação (no meu caso, JBoss 4.2.3).

Exemplo:
./run.sh -c default (…) -Duser.timezone=GMT-0400 (…)