Une erreur s'est produite lors du traitement du gabarit.
The string doesn't match the expected date/time/date-time format. The string to parse was: "". The expected format was: "yyyy-MM-dd hh:mm:ss.SSS".
The nested reason given follows:
Unparseable date: ""

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign dateModificationStr = dateMod...  [in template "20101#20128#36857" at line 34, column 10]
----
1<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
2<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
3 
4 
5<#--  --# -- main --> 
6<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService" ) > 
7 
8<#assign dateModificationStr = ""> 
9<#assign dateDebutStr = ""> 
10<#assign dateFinStr = ""> 
11<#assign commentaireCoutPrincipal = ""> 
12<#assign imageCoutPrincipal = ""> 
13	 
14<#assign catnatServiceUtil = utilLocator.findUtil('catnat-services-hook', 'fr.catnat.services.CatNatServiceUtil')> 
15<#attempt> 
16        <#assign infosEvenement = catnatServiceUtil.getInfoEvenement(Numero_AGIR.getData())> 
17    <#recover> 
18        <#assign infosEvenement = [] > 
19    </#attempt> 
20 
21<#if (infosEvenement?has_content)> 
22    <#assign jsonResponse = jsonFactoryUtil.createJSONObject(infosEvenement)> 
23         <#setting time_zone = "Europe/Paris"> 
24         <#setting time_zone = languageUtil.get(locale, "template-timezone")> 
25 
26         <#assign originalLocale = locale> 
27 
28	<#if  jsonResponse.get('dateModification')?is_number> 
29         <#assign dateModification = jsonResponse.getLong('dateModification') + 10800000> 
30         <#assign dateModification = dateModification?number_to_datetime> 
31         <#assign dateModificationStr = dateModification?date?string("dd/MM/yyyy")> 
32    <#else> 
33         <#assign dateModification = jsonResponse.getString('dateModification')> 
34         <#assign dateModificationStr = dateModification?datetime("yyyy-MM-dd hh:mm:ss.SSS")?string("dd/MM/yyyy")>         
35    </#if> 
36      
37      
38    <#if  jsonResponse.get('dateDebut')?is_number> 
39         <#assign dateDebut = jsonResponse.getLong('dateDebut') + 10800000> 
40         <#assign dateDebut = dateDebut?number_to_datetime> 
41         <#assign dateDebutStr = dateDebut?date?string("dd/MM/yyyy")> 
42    <#else> 
43         <#assign dateDebut = jsonResponse.getString('dateDebut')>  
44         <#assign dateDebutStr = dateDebut?date("yyyy-MM-dd")> 
45         
46    </#if> 
47     <#if  jsonResponse.get('dateFin')?is_number> 
48         <#assign dateFin = jsonResponse.getLong('dateFin') + 10800000> 
49          
50         <#assign dateFin = dateFin?number_to_datetime> 
51         <#assign dateFinStr = dateFin?date?string("dd/MM/yyyy")> 
52    <#else> 
53         <#assign dateFin = jsonResponse.getString('dateFin')>  
54         <#assign dateFinStr = dateFin?date("yyyy-MM-dd")> 
55         
56    </#if>  
57 
58</#if> 
59		 
60<#--  # -- main --> 
61 <#assign assetUrlToRedirect = journalArticleLocalService.getDisplayArticleByUrlTitle(groupId, .vars['reserved-article-url-title'].data)>  
62 
63<#if jsonResponse.getJSONObject('vueMarche') != "null"> 
64    <#assign vueMarche = jsonResponse.getJSONObject('vueMarche')> 
65</#if> 
66    
67<#--  #Prendre en compte le flag "Afficher cout" dans la contribution Liferay--> 
68<#assign typeEvenement = jsonResponse.getString('typeEvenement')> 
69<#assign title = jsonResponse.getString('libelle')> 
70 
71<#-- <#assign currentUrl = request.get("attributes").CURRENT_COMPLETE_URL > --> 
72 <#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() /> 
73<#assign imageShare = "" >  
74<style> 
75	@media (max-width: 767px) { 
76		#event_actions { 
77		    display: none; 
78
79		.fa-download { 
80		    display: none; 
81
82		 
83		#deptTrunc{ 
84		display: none; 
85
86		 
87		#deptAll{ 
88		display: inline !important; 
89
90
91</style> 
92<script> 
93function printEvent() 
94
95    var eventElement = document.getElementById('event_catnat'); 
96    var mywindow = window.open('', 'PRINT', ''); 
97    var printCss = document.getElementById('deptTrunc'); 
98 
99    printCss.innerHTML = document.getElementById('deptAll').innerHTML; 
100 
101    mywindow.document.write('<html><head><title>' + document.title  + '</title>'); 
102    mywindow.document.write('</head><body >'); 
103    mywindow.document.write('<h1>' + document.title  + '</h1>'); 
104    mywindow.document.write(eventElement.innerHTML); 
105    mywindow.document.write('</body></html>'); 
106    printCss 
107 
108    mywindow.document.close(); // necessary for IE >= 10 
109    mywindow.focus(); // necessary for IE >= 10*/ 
110 
111    mywindow.print(); 
112    mywindow.close(); 
113 
114    return true; 
115
116 
117<#--function downloadPDF (){ 
118   return printEvent(); 
119}--> 
120 
121var numeroAgir = '${Numero_AGIR.getData()}'; 
122 
123function displayArretes(callback) { 
124    callback(0, 8, false, '${Numero_AGIR.getData()}'); 
125
126 
127</script> 
128 
129<div class="main-wrapper" id="event_catnat"> 
130    <div class="display-3 primary">${title}</div> 
131    <p> <span class="event_subtitle-txt"> 
132        Mise à jour le ${dateModificationStr}</span></p> 
133    <br> 
134    <div class="row"> 
135        <div class="col-md-8" style="padding: 0;"> 
136    	    <#if (!Image_principale.getData()?has_content)> 
137        		<img src="/images/favicon/mstile-70x70.png" alt="Image Evenement"> 
138        	<#else> 
139        		<img src="${Image_principale.getData()}" class="event_img" alt="Image Evenement"/> 
140        	</#if> 
141             
142          
143                 
144            <#if (validator.isNotNull(Resume.getData()))> 
145                <div class="display-5 primary mt-4">${Resume.getData()}</div> 
146            </#if> 
147        </div> 
148         
149        <div class="col-md-4" style="padding: 0;"> 
150            <table style="width: 100%;border-spacing: 0px;" border="0"> 
151            <tbody> 
152              <tr> 
153                <td style="padding:15px;text-align: left; background-color: #f3f3f3;"> 
154                    <table style="width:100%"> 
155                    <tbody> 
156                    <tr>  
157                        <#if (validator.isNotNull(Information_cle_1_Valeur.getData()))> 
158							<td width="60%"><span class="event_info_title">${Information_cle_1_Valeur.getData()}</span><br><span class="event_info" style="color: #1a5b81; font-weight: bold;">${Information_cle_1_Label.getData()}</span></td>  
159                       </#if> 
160                        <#if (validator.isNotNull(Information_cle_2_Valeur.getData()))> 
161							<td><span class="event_info_title">${Information_cle_2_Valeur.getData()}</span><br><span class="event_info" style="color: #1a5b81;font-weight: bold;">${Information_cle_2_Label.getData()}</span>  </td>  
162                        </#if> 
163                        <#--  --#  Si mise en avant absente => Renseigner le coût de l'événement.--> 
164                        <#if (validator.isNull(Information_cle_1_Valeur.getData()) &&  validator.isNull(Information_cle_2_Valeur.getData()) && getterUtil.getBoolean(Afficher_cout.getData()))> 
165                          <#assign coutMarche = vueMarche.getJSONObject('cout')> 
166                            <td> 
167								<span class="event_info_title" style="font-size: 24px;">${coutMarche.getString("coutStr")}</span><br> 
168								 
169								<span class="event_info" style="color: #1a5b81; font-weight: bold;"> 
170									<#if (validator.isNotNull(Information_cle_cout.getData()))> 
171										${Information_cle_cout.getData()} 
172									<#else> 
173										Dommages assuré hors automobile 
174									</#if> 
175								</span> 
176							</td>  
177                       </#if> 
178                    </tr>  
179                    </tbody> 
180                    </table> 
181                    <hr class="title-category-hr-chatams-blue" style="margin-top: 10px;margin-bottom: 10px;"> 
182            	  <table style="width:100%"> 
183            		  <tr> 
184            			<td width="60%"> 
185            				<b>Date de début </b> 
186            				<br> 
187            				<span class="event_info">${dateDebutStr}</span>  
188            			</td> 
189            			<td> 
190            				<b>Date de fin</b> 
191            				<br> 
192            				<span class="event_info">${dateFinStr}</span>  
193            			</td> 
194            		  </tr> 
195            	  </table> 
196                  
197                  <#if (validator.isNotNull(Cours_eau.getData()))> 
198	                  <br> 
199	                  <b>Cours d'eau ayant débordé</b><br> 
200	                  <p>${Cours_eau.getData()}</p> 
201                  </#if> 
202                   
203                  <#if (validator.isNotNull(jsonResponse.getString('pluviometrie1H'))|| validator.isNotNull(jsonResponse.getString('pluviometrie24H')))> 
204		              <br> 
205		              <br> 
206	                  <b>Pluviométrie maximale</b> 
207	                  <br> 
208	                  <p> 
209	                  	  <#if (validator.isNotNull(jsonResponse.getString('pluviometrie1H')))> 
210	                      	${jsonResponse.getString('pluviometrie1H')} mm en 1h  
211	                      </#if> 
212	                      <#if (validator.isNotNull(jsonResponse.getString('pluviometrie1H')))> 
213		                      <br> 
214		                      ${jsonResponse.getString('pluviometrie24H')} mm en 24 h 
215		                 </#if> 
216	                  </p>  
217                  </#if> 
218                  <br> 
219                  <br> 
220                  <b>Départements concernés</b> <br> 
221                    <#assign deps = jsonResponse.getJSONArray('departementsTouches')> 
222                    <#assign fin = deps.length() - 1> 
223                    
224                    <#assign depsStr = ""> 
225                    <#assign allDepsStr = ""> 
226                     <#assign allDepsPrint = ""> 
227                    <#list 0..fin as i> 
228                       <#assign dep = deps.getString(i)> 
229                        <#if i != 0> 
230                            <#assign separator = ', '> 
231                        <#else> 
232                            <#assign separator = ''> 
233                        </#if> 
234                     
235                         <#assign allDepsStr = allDepsStr + separator + dep> 
236                        <#if i < 6> 
237                            <#assign depsStr = depsStr + separator +dep> 
238                        </#if>   
239                    </#list>              
240                    <#if deps?length gt 6> 
241                        <#assign depsStr = depsStr + " ... "> 
242                     
243                    </#if>   
244                   
245                     
246                  <span id="deptTrunc" class="event_info" title="${allDepsStr}"> 
247                    ${depsStr} 
248                  </span>  
249                   
250                    <span id="deptAll" class="event_info" style="display: none;"> 
251                     ${allDepsStr} 
252                    </span>  
253                  <br> 
254                  <br> 
255                  <div class="pull-right" id="event_actions"> 
256                      
257                      <#--<a href="#" OnClick="javascript:downloadPDF()" title="Telecharger le document"><i style="color:#1a5b81;font-size: 1.8em;" class="fas fa-download"></i></a>--> 
258                      <a href="#" OnClick="javascript:printEvent()" title="Imprimer le document"><i style="color:#1a5b81;font-size: 1.8em;" class="fas fa-print"></i></a> 
259                  </div> 
260                 
261                </td> 
262              </tr> 
263            </tbody> 
264            </table> 
265        </div> 
266    </div> 
267    <br> 
268 
269 
270  
271    <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true" style="text-align:justify"> 
272 
273        <#if (validator.isNotNull(Description.getData()))> 
274        <div class="panel panel-default"> 
275            <div class="panel-heading" role="tab" id="heading1"> 
276            <a role="button" data-toggle="collapse" href="#collapse1" aria-expanded="true" aria-controls="collapse1" class="collapse-head collapsed"> 
277                <h4 class="panel-title"> 
278                    <span class="event_description_title">DESCRIPTION DE L'EVENEMENT</span> 
279                </h4> 
280            </a> 
281            </div> 
282            <div id="collapse1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading1"> 
283            <div class="panel-body"> 
284                ${Description.getData()} 
285            </div> 
286            </div> 
287        </div> 
288        </#if> 
289 
290 
291        <#if (validator.isNotNull(Dommages.getData()))> 
292 
293        <div class="panel panel-default"> 
294          
295            <div class="panel-heading" role="tab" id="heading2"> 
296                <a role="button" data-toggle="collapse" href="#collapse2" aria-expanded="false" aria-controls="collapse2" class="collapse-head collapsed"> 
297                    <h4 class="panel-title"> 
298                        <span class="event_description_title">DOMMAGES CONSTATES</span> 
299                    </h4> 
300                </a> 
301                </div> 
302             
303            <div id="collapse2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading2"> 
304            <div class="panel-body"> 
305                ${Dommages.getData()} 
306            </div> 
307            </div> 
308        </div> 
309         </#if> 
310               
311 
312 
313        <#assign communes = jsonResponse.getJSONArray('communesTouchees')> 
314        <#if validator.isNotNull(communes) && communes?length gt 0  && communes != "[]"> 
315        <div class="panel panel-default"> 
316            <div class="panel-heading" role="tab" id="heading3"> 
317                <a role="button" data-toggle="collapse" href="#collapse3" aria-expanded="false" aria-controls="collapse3" class="collapse-head collapsed"> 
318                    <h4 class="panel-title"> 
319                     <span class="event_description_title"> COMMUNES LES PLUS SINISTREES</span> 
320                    </h4> 
321                </a> 
322            </div> 
323            <div id="collapse3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading3"> 
324            <div class="panel-body"> 
325             
326                <#assign fin = communes?length - 1> 
327                <#list 0..fin as i> 
328                <#assign commune = communes.getString(i)> 
329                    <#if commune??> 
330                        <p>${commune}</p> 
331                    </#if> 
332                </#list> 
333            </div> 
334            </div> 
335        </div> 
336      </#if> 
337 
338 
339 
340 
341        <#assign vueMarche = jsonResponse.getJSONObject('vueMarche')> 
342 
343        <#--  --#Prendre en compte le flag "Afficher cout" dans la contribution Liferay--> 
344        <#assign typeEvenement = jsonResponse.getString('typeEvenement')> 
345             
346        <#if (getterUtil.getBoolean(Afficher_cout.getData()))> 
347             
348        <div class="panel panel-default"> 
349            <div class="panel-heading" role="tab" id="heading4"> 
350                <a role="button" data-toggle="collapse" href="#collapse4" aria-expanded="true" aria-controls="collapse4" class="collapse-head collapsed"> 
351                    <h4 class="panel-title"> 
352                        <span class="event_description_title">COÛT DE L'EVENEMENT</span> 
353                    </h4> 
354                </a> 
355            </div> 
356            <div id="collapse4" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading4"> 
357            <div class="panel-body"> 
358                <#assign coutMarche = vueMarche.getJSONObject('cout')> 
359				<#if  coutMarche.get('dateCout')?is_number> 
360					<#assign dateCoutPrincipal = coutMarche.getLong('dateCout') + 10800000> 
361					<#assign dateCoutPrincipal = dateCoutPrincipal?number_to_datetime> 
362					<#assign dateCoutPrincipalStr = dateCoutPrincipal?date?string("dd/MM/yyyy")> 
363				<#else> 
364					 <#assign dateCoutPrincipalStr = coutMarche.getString("dateCout")?datetime("yyyy-MM-dd")?string("dd/MM/yyyy")>         
365				</#if>				 
366                     
367                    <p><b>${coutMarche.getString("coutStr")}</b> 
368                     
369                    <#if (cout.getSiblings()?has_content)> 
370                        <#--  # Récupération du commentaire (liferay) correspondant au cout principal 
371                        ## Parcours de la liste des couts du document liferay, pour trouver le commentaire correspondant au cout recu via le service web--> 
372                        <#list  cout.getSiblings() as cur_cout> 
373                            <#assign cout_Data = cur_cout.getData()> 
374                            <#if cout_Data?has_content> 
375                               <#assign cout_DateObj =cout_Data> 
376                             
377                                <#assign coutDate = cout_DateObj?datetime("yyyy-mm-dd")?string("dd/MM/yyyy")> 
378                                <#-- TODO Must check this Part --> 
379                               <#-- <#if (coutDate == dateCoutPrincipalStr)> --> 
380                                  <#assign commentaireCoutPrincipal = getterUtil.getString(cur_cout.getChild("Commentaire_cout").getData())> 
381                                   <#assign imageCoutPrincipal = cur_cout.getChild("Image_cout_par_commune").getData()> 
382                                 <#-- </#if> --> 
383                                     
384                             </#if> 
385                        </#list> 
386                    </#if> 
387                    (mise à jour le : ${dateCoutPrincipalStr}) </p> 
388                    
389                    <#if (validator.isNotNull(commentaireCoutPrincipal))> 
390                        <p>${commentaireCoutPrincipal}</p> 
391                    </#if> 
392                     
393                    <#if (validator.isNotNull(imageCoutPrincipal))> 
394                        <img alt="Cout par commune pour l'ensemble du marché" style="width:100%;" src="${imageCoutPrincipal}" /> 
395                   </#if> 
396                     
397                    <br> 
398                   
399                    <#if vueMarche.get('coutsPrecedents') != "null"> 
400                   
401                        <#assign coutsPrecedents = vueMarche.getJSONArray('coutsPrecedents')> 
402                        <#if  validator.isNotNull(coutsPrecedents) && coutsPrecedents?length gt 0> 
403                     
404                        <p><b>Rappel des estimations précedentes</b></p> 
405                        <#assign fin = coutsPrecedents.length() - 1> 
406                        <#list 0..fin as i> 
407                        <#if  coutsPrecedents.get(i).get('dateCout')?is_number> 
408                           <#assign dateCoutPrecedent = coutsPrecedents.get(i).getString('dateCout')?number + 10800000> 
409                           <#assign dateCoutPrecedent = dateCoutPrecedent?number_to_datetime> 
410                           <#assign dateCoutPrecedentStr = dateCoutPrecedent?date?string("dd/MM/yyyy")> 
411                        <#else> 
412                           <#assign dateCoutPrecedentStr = coutsPrecedents.get(i).get('dateCout')?datetime("yyyy-mm-dd")?string("dd/MM/yyyy")> 
413                        </#if>     
414                             
415                             
416                            <#-- TODO -->  
417                            <#list cout.getSiblings() as cur_cout> 
418                                    <#assign cout_DateObj = cur_cout.getData()> 
419                                    <#assign coutDate =  cout_DateObj?datetime("yyyy-MM-dd")?string("dd/MM/yyyy")> 
420                                    <#-- TODO (Must Check this Part) --> 
421                                    <#-- <#if coutDate==dateCoutPrecedentStr> --> 
422                                        <#assign commentaireCout = getterUtil.getString(cur_cout.getChild("Commentaire_cout").getData())?replace("<p>","")?replace("</p>","")> 
423                                        <p>Le ${dateCoutPrecedentStr} : <b>${coutsPrecedents.get(i).getString("coutStr")}</b> (${commentaireCout})</p> 
424                                  <#--  </#if> --> 
425                            </#list> 
426                             
427                        </#list> 
428                    </#if> 
429                    </#if> 
430                     
431            </div> 
432            </div> 
433        </div> 
434        </#if> 
435        <div class="panel panel-default"> 
436            <div class="panel-heading" role="tab" id="heading5"> 
437                <a role="button" data-toggle="collapse"  href="#collapse5" aria-expanded="true" aria-controls="collapse5" class="collapse-head collapsed"> 
438                    <h4 class="panel-title"> 
439                        <span class="event_description_title">RECONNAISSANCES CAT NAT</span> 
440                    </h4> 
441                </a> 
442             
443            </div> 
444            <div id="collapse5" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading5"> 
445            <div class="panel-body"> 
446                <p>Nombre de communes reconnues Cat Nat : <b>${vueMarche.getString("nombreCommunesReconnuesCatNat")}</b> </p> 
447 
448                <#if (validator.isNotNull(Image_reco.getData()))> 
449                    <img style="max-width:800px;width:100%" alt="Communes reconnues en 굡t de catastrophes naturelle" src="${Image_reco.getData()}" /> 
450                 </#if> 
451            </div> 
452            </div> 
453        </div> 
454 
455        <#if (validator.isNotNull(Source.getData()))> 
456        <div class="panel panel-default"> 
457            <div class="panel-heading" role="tab" id="heading6"> 
458                <a role="button" data-toggle="collapse" href="#collapse6" aria-expanded="true" aria-controls="collapse6" class="collapse-head collapsed"> 
459                     <h4 class="panel-title"> 
460                        <span class="event_description_title">SOURCES</span> 
461                    </h4> 
462                </a> 
463            </div> 
464            <div id="collapse6" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading6"> 
465            <div class="panel-body"> 
466                ${Source.getData()} 
467            </div> 
468            </div> 
469        </div> 
470         </#if> 
471 
472 
473    </div> 
474 
475 
476</div> 
477<#-- 
478<div class="ssk-sticky ssk-left ssk-center ssk-lg"> 
479 
480<#assign resumeEvenementSafe = Resume.getData()?replace("\'", "\\'") > 
481<#assign resumeEvenementSafe = resumeEvenementSafe?replace("'", "\\'") > 
482 
483<a href="#" class="ssk ssk-facebook" data-ssk-ready="true"  onclick="shareFacebook(${title},${title},${imageShare}, ${currentUrl}, false); return false;"></a> 
484<a href="" class="ssk ssk-twitter" data-ssk-ready="true" onclick="window.open('http://twitter.com/share?text=${title}&url=${currentUrl}', 'twitter-share-dialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=no, width=800,height=500');return false;"></a> 
485<a href="#" class="ssk ssk-linkedin" data-ssk-ready="true" onclick="window.open('https://www.linkedin.com/shareArticle?mini=true&url=${currentUrl}', 'linkedin-share-dialog', 'menubar=no,toolbar=no,resizable=yes,scrollbars=no,width=800,height=500');return false;"></a> 
486 
487</div> 
488-->