Bonjour tout le monde ,


J'ai un petit problème avec une JSF.

Le but de cette dernière est d'afficher des données contenues dans une base de donnée à savoir : un id , une date de début , une date de fin.

Pour cela j'utilise une dataTable dont voici le bout de code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<h:outputText value="#{manageValidation.essai }" />
 
	<h:dataTable value="#{manageValidation.dataList}" var="dataItem" border="3">
		<h:column>
			<f:facet name="header">
				<h:outputText value="Selected" />
			</f:facet>
			<h:selectBooleanCheckbox value="#{dataItem.selected}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="User" />
			</f:facet>
			<h:outputText value="#{dataItem.occcupation.idUser}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="Start" />
			</f:facet>
			<h:outputText value="#{dataItem.occcupation.startDate}" />
		</h:column>
		<h:column>
			<f:facet name="header">
				<h:outputText value="End" />
			</f:facet>
			<h:outputText value="#{dataItem.occcupation.endDate}" />
		</h:column>
	</h:dataTable>

Pour cela , j'utilise une ArrayList d'objets Occupation qui contient mes 2 dates et d'autres infos.

Le backing bean que j'utilise est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
	public manageValidation()
	{
		try
		{
 
			ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); 
			login = (loginController)((HttpSession)context.getSession(false)).getAttribute("loginController"); 
 
			List<Occupation> list = login.getUser().getNonValidateOccupation();
			for(int i=0 ; i<list.size() ; i++)
			{
				JOccupation jocc = new JOccupation();
				System.out.println("NumUser "+list.get(i).getIdUser());
				System.out.println("Date "+list.get(i).getStartDate());
				jocc.setOcccupation(list.get(i));
				System.out.println("Date dans jocc "+jocc.getOcccupation().getStartDate());
				System.out.println("Type "+jocc.getOcccupation().getDayMode());
				dataList.add(jocc);
				System.out.println("Date dans dataList "+dataList.get(i).getOcccupation().getStartDate());
				System.out.println("Date dans dataList "+dataList.get(i).getOcccupation().getEndDate());
 
			}
 
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
		}
	}
L'objet JOccupation encapsule mon objet Occupation et lui rajoute une propriété "Selected" mais bon, ça on s'en fou.

J'ai mis tout plein d'affichage (parceque je devenais dingue) , dans lesquels j'affiche la date que j'aimerais afficher. Jusque là rien d'anormal puisque la date à l'écran est bien la date se trouvant dans la base de données.

Seul problème , la date affichée dans la JSF tombe un jour trop tot. Par exemple :

Si j'ai le 30 mars 2008 dans ma BDD , j'affiche 30 mars 2008 dans mes println , mais dans la JSF il me met 29 mars 2008.

D'où cela peut-il provenir sachant que dans mon code je n'effectue jamais une opération de soustraction aux jours du mois. Au début je pensais à une mauvaise gestion quelque part avec Hibernate mais c'est quand même troublant que le println affiche la bonne date , mais pas la JSF :s


Merci d'avance ^^


EDIT : Petite précision , si je décide d'afficher la date du jour dans ma JSF , elle est bien correcte.