Rich calendar avec JSF/Spring et hibernate

Sublimyu Messages postés 1 Date d'inscription dimanche 13 septembre 2009 Statut Membre Dernière intervention 15 mai 2012 - 15 mai 2012 à 10:58
Bonjour à tous ,

j'essaie de développer un calendrier paramétrable avec une architecture Richfaces 4.0 hibernate 3.2 et Spring 2.5.

En principe mon calendrier doit permettre de sélectionner toutes les dates sauf les WE, et les dates listées dans ma BD (celles ci sont grisées).

Mon problème est que les dates qui devraient êtres grisées ne le sont pas immédiatement au chargement du calendrier. je dois faire défiler 1 mois puis retourner en arrière pour les voir apparaitre. J'ai passé 1 journée à chercher sans trouver le problème help!

Mon code:




.bdc {
background-color: gray;
}

.wdc {
font-weight: bold;
font-style: italic;
}






package com.partenor.web;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.annotation.PostConstruct;



import org.richfaces.model.CalendarDataModel;
import org.richfaces.model.CalendarDataModelItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.partenor.model.Jours_non_ouvres;
import com.partenor.service.Jours_non_ouvresService;

@Component("calendarModel")
@Scope("session")
public class CalendarModel implements CalendarDataModel {
private static final String WEEKEND_DAY_CLASS = "wdc";
private static final String OFF_DAY_CLASS = "bdc";
private static final String BOUNDARY_DAY_CLASS = "rf-ca-boundary-dates";

@Autowired
private transient Jours_non_ouvresService jours_non_ouvresService;

private List jours_non_ouvres;
private Date currentDate;
private Calendar current;
private Calendar today;


@PostConstruct
public void init(){
jours_non_ouvres=jours_non_ouvresService.findAllDate();


}


private boolean checkOffDay(Calendar calendar) {



return jours_non_ouvres.contains(calendar.getTime());

}





private boolean checkWeekend(Calendar calendar) {
return (calendar.get(Calendar.DAY_OF_WEEK) Calendar.SUNDAY || calendar.get(Calendar.DAY_OF_WEEK) Calendar.SATURDAY);
}

public CalendarDataModelItem[] getData(Date[] dateArray) {
CalendarDataModelItem[] modelItems = new CalendarModelItem[dateArray.length];
current = GregorianCalendar.getInstance();
today = GregorianCalendar.getInstance();
today.setTime(new Date());
for (int i = 0; i < dateArray.length; i++) {
current.setTime(dateArray[i]);
CalendarModelItem modelItem = new CalendarModelItem();
if (checkOffDay(current)) {
modelItem.setEnabled(false);
modelItem.setStyleClass(OFF_DAY_CLASS);

} else if (current.before(today)) {
modelItem.setEnabled(false);
modelItem.setStyleClass(BOUNDARY_DAY_CLASS);
} else if (checkWeekend(current)) {
modelItem.setEnabled(false);
modelItem.setStyleClass(WEEKEND_DAY_CLASS);
} else {
modelItem.setEnabled(true);
modelItem.setStyleClass("");
}
modelItems[i] = modelItem;
}

return modelItems;
}

public Object getToolTip(Date date) {
// TODO Auto-generated method stub
return null;
}




/**
* @param currentDate the currentDate to set
*/
public void setCurrentDate(Date currentDate) {
this.currentDate = currentDate;
}


/**
* @return the currentDate
*/
public Date getCurrentDate() {
return currentDate;
}



}