An error occurred while processing the template.
Java method "com.liferay.portal.kernel.util.DateUtil_IW.parseDate(String, String, Locale)" threw an exception when invoked on com.liferay.portal.kernel.util.DateUtil_IW object "com.liferay.portal.kernel.util.DateUtil_IW@619ebcfc"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign fechaActualizacion_Data = dat...  [in template "20096#20121#49211" at line 38, column 9]
----
1<#-- 16/10/2024  
2Detalle modelo con acordeones y subacordeones 
3---> 
4<#-- Obtener la ruta a las imágenes del tema --> 
5<#assign  
6    theme_display = themeDisplay 
7    themeImagePath = theme_display.getPathThemeImages() 
8/> 
9 
10<#-- Incluir la plantilla de selector de icono--> 
11<#include "${templatesPath}/49219"> 
12 
13<#-- Incluir la plantilla que genera la sección de recursos relacionados--> 
14<#include "${templatesPath}/49195"> 
15 
16<#-- Incluir la plantilla que genera la alerta --> 
17<#include "${templatesPath}/74012524"> 
18 
19<#if avisoEmergente?? && avisoEmergente.getData()??> 
20<@generarAvisoEmergente avisoEmergente/> 
21</#if> 
22 
23<div class="container containerPrin"> 
24    <section class="sectTittel"> 
25        <div class="row"> 
26            <div class="col-12"> 
27                <#if (encabezado.getData())??> 
28                    <h1 class="cHTittle">${encabezado.getData()}</h1> 
29                </#if> 
30									<#-- Sección que muestra la fecha de la última actualización del artículo --> 
31<p style="font-size: 0.7778rem;color: #495C89;" class="docPub">Fecha de la última modificación:												 
32    <#assign fecha_Data = getterUtil.getString(fechaActualizacion.getData())> 
33    <#if validator.isNotNull(fecha_Data)> 
34        <#assign fecha_DateObj = dateUtil.parseDate("yyyy-MM-dd", fecha_Data, locale)> 
35        ${dateUtil.getDate(fecha_DateObj, "dd/MM/yyyy", locale)} 
36    <#else> 
37        <#assign fechaModificacion_Data  = .vars["reserved-article-modified-date"].data> 
38        <#assign fechaActualizacion_Data = dateUtil.parseDate("EEE, dd MMM yyyy HH:mm:ss Z", fechaModificacion_Data , locale)> 
39        ${dateUtil.getDate(fechaActualizacion_Data, "dd/MM/yyyy", locale)} 
40    </#if> 
41</p> 
42            </div> 
43        </div> 
44    </section> 
45    <div class="row"> 
46        <div class="col-12 col-lg-8 colpadR060" id="sectContPrin"> 
47            <!-- Section AccordModel --> 
48            <section class="sectAccordModel"> 
49                <#if (secFij.tituloSecFij.getData())?? || (secFij.textoSecFij.getData())??> 
50                    <div class="row"> 
51                        <div class="col-12"> 
52                            <#if (secFij.tituloSecFij.getData())?? && (secFij.tituloSecFij.getData())?has_content> 
53                                <h2 class="h2accord">${secFij.tituloSecFij.getData()}</h2> 
54                            </#if> 
55                            <#if (secFij.textoSecFij.getData())?? && (secFij.textoSecFij.getData())?has_content> 
56                                ${secFij.textoSecFij.getData()} 
57                            </#if> 
58                        </div> 
59                    </div> 
60                </#if> 
61             
62            <#if (secPrin.gAcorSecPrin.getSiblings())?? && (secPrin.gAcorSecPrin.getSiblings())?has_content> 
63 
64                    <div class="row"> 
65                        <div class="col-12"> 
66                            <div class="divAccorModel"> 
67                                <div class="accordion accordionModel" id="accordionModel"> 
68																       <div class="card" style="display:none;" > 
69                                                <div class="card-header"> 
70                                                    <h2 class="accordion-header" id="headingprueba" data-toggle="collapse" data-target="#collapseprueba" aria-expanded="true" aria-controls="collapseprueba"> 
71                                                      <img class="iconAccordion" src="${themeImagePath}/sm/icons/general/arrow_drop_down.svg" alt="" title="Abrir acordeón">    
72                                                        Primer acordeón invisible 
73                                                    </h2> 
74                                                </div> 
75                                                <div id="collapseprueba" class="accordion-collapse collapse" aria-labelledby="headingprueba" data-parent="#accordionModel"> 
76                                                     
77                                                </div> 
78                                        </div> 
79                                    <#list secPrin.gAcorSecPrin.getSiblings() as cur_itemAccord> 
80                                        <#if (cur_itemAccord.tituloAcorSecPrin.getData())?? && (cur_itemAccord.tituloAcorSecPrin.getData())?has_content && (cur_itemAccord.textoAcorSecPrin.getData())??  && (cur_itemAccord.textoAcorSecPrin.getData())?has_content> 
81                                            <div class="card"> 
82                                                <div class="card-header"> 
83                                                    <h2 class="accordion-header" id="heading${cur_itemAccord_index}" data-toggle="collapse" data-target="#collapse${cur_itemAccord_index}" aria-expanded="false" aria-controls="collapse${cur_itemAccord_index}"> 
84                                                        <button class="accordion-button collapsed" type="button"> 
85                                                            ${cur_itemAccord.tituloAcorSecPrin.getData()} 
86                                                        </button> 
87                                                        <img class="iconAccordion" src="${themeImagePath}/sm/icons/general/arrow_drop_down.svg" alt="" title="Abrir acordeón"> 
88                                                    </h2> 
89                                                </div> 
90                                                <div id="collapse${cur_itemAccord_index}" class="accordion-collapse collapse" aria-labelledby="heading${cur_itemAccord_index}" data-parent="#accordionModel"> 
91                                                    <div class="accordion-body"> 
92                                                        ${cur_itemAccord.textoAcorSecPrin.getData()} 
93                                                    </div> 
94                                                    <#if cur_itemAccord.subacordeon?? && cur_itemAccord.subacordeon.getSiblings()?has_content > 
95																						 
96                                                        <div class="accordion accordionModel" id="accordionModel${cur_itemAccord_index}"> 
97                                                            <div class="card d-none"> 
98                                                                <div class="card-header"> 
99                                                                <button id="headingOculto" class="accordion-button collapsed" role="heading" aria-level="3" aria-expanded="false" aria-controls="collapseOculto"> 
100                                                                    <span>Sección Prueba</span> 
101                                                                </button> 
102                                                                </div> 
103                                                                <div id="collapseOculto" class="accordion-collapse collapse" aria-labelledby="headingOculto" data-parent="#accordionModel${cur_itemAccord_index}" style=""> 
104                                                                 
105                                                                </div> 
106                                                            </div> 
107                                                            <#list cur_itemAccord.subacordeon.getSiblings() as cur_subacordeon> 
108                                                                <#if cur_subacordeon.tituloSubAcordeon.getData()?? && cur_subacordeon.tituloSubAcordeon.getData()?has_content &&  (cur_subacordeon.textoSubAcordeon.getData())?? &&  (cur_subacordeon.textoSubAcordeon.getData())?has_content> 
109                                                                    <div class="card" style="margin-left: 1rem;"> 
110                                                                        <div class="card-header"> 
111                                                                                <h2 class="accordion-header collapsed" id="heading${cur_itemAccord_index}${cur_subacordeon_index}" data-toggle="collapse" data-target="#collapse${cur_itemAccord_index}${cur_subacordeon_index}" aria-expanded="false" aria-controls="collapse${cur_itemAccord_index}${cur_subacordeon_index}"> 
112                                                                                        <button class="accordion-button" type="button" style="font-size: 1rem;"> 
113                                                                                            ${cur_subacordeon.tituloSubAcordeon.getData()} 
114                                                                                        </button> 
115                                                                                        <img class="iconAccordion" src="${themeImagePath}/sm/icons/general/arrow_drop_down.svg" alt="icono flecha acordeón" title="icono flecha acordeón" style="transform: rotate(0deg);"> 
116                                                                                </h2> 
117                                                                        </div> 
118																		<div id="collapse${cur_itemAccord_index}${cur_subacordeon_index}" class="accordion-collapse collapse" aria-labelledby="heading${cur_itemAccord_index}${cur_subacordeon_index}" data-parent="#accordionModel${cur_itemAccord_index}"> 
119																		    <div class="accordion-bodyLeg mb-0" style="display:block"> 
120																				${cur_subacordeon.textoSubAcordeon.getData()} 
121                                                                            </div> 
122                                                                        </div> 
123                                                                    </div> 
124                                                                </#if> 
125																								 
126															</#list> 
127																									 
128														</div> 
129													</#if> 
130                                                </div> 
131                                            </div> 
132                                        </#if> 
133                                    </#list> 
134                                </div> 
135                            </div> 
136                        </div> 
137                    </div> 
138                </#if>  
139            </section> 
140 
141            <#if secAvisos.aviso.getSiblings()?has_content && secAvisos.aviso?? && secAvisos.aviso.getData()?has_content> 
142            <section class="sectAccordModel"> 
143                <div class="row"> 
144                    <div class="col-12"> 
145                        <h2 class="h2accord"> 
146                            <img class="iconAccord" src="${themeImagePath}/sm/icons/general/avisos.svg" alt="icono campana avisos" title="icono flecha acordeón"> 
147                             
148                            <#if (secAvisos.tituloAvisos.getData())?? && (secAvisos.tituloAvisos.getData())?has_content> 
149                                ${secAvisos.tituloAvisos.getData()} 
150                            <#else> 
151                                Avisos y novedades 
152                            </#if> 
153                        </h2> 
154                    </div> 
155                </div> 
156                     
157            <div class="row"> 
158                <div class="col-12"> 
159                    <div class="divAccorModel"> 
160                        <div class="accordion accordionModelAv" id="accordionModelAv"> 
161                            <div class="card d-none"> 
162                                <div class="card-header"> 
163                                    <h2 class="accordion-header" id="headingOculto" data-toggle="collapse" data-target="#collapseOculto" aria-expanded="true" aria-controls="collapseOculto">Acordeón oculto</h2> 
164                                </div> 
165                                <div id="collapseOculto" class="accordion-collapse collapse show" aria-labelledby="headingOculto" data-parent="#accordionModelAv"> 
166                                    <div class="accordion-body"> 
167                                    </div> 
168                                </div> 
169                            </div> 
170                            <#list secAvisos.aviso.getSiblings() as cur_aviso> 
171                                <#assign 
172                                    webContentData = jsonFactoryUtil.createJSONObject(cur_aviso.getData()) 
173                                /> 
174                                <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
175                                <#if webContentData?? && webContentData.classPK?has_content> 
176                                    <#assign journalArticle = journalArticleLocalService.fetchLatestArticle(webContentData.classPK?number) /> 
177                                    <#if journalArticle?? > 
178                                        <#assign docXml = saxReaderUtil.read(journalArticle.getContentByLocale(themeDisplay.getLocale())) /> 
179                                             
180                                        <!-- Título --> 
181                                        <#assign titulo = docXml.valueOf("//dynamic-element[@field-reference='titulo']/dynamic-content/text()") /> 
182 
183                                        <!-- Fecha --> 
184                                        <#assign fecha = docXml.valueOf("//dynamic-element[@field-reference='fechaNoticia']/dynamic-content") /> 
185                                        <#attempt> 
186                                            <#assign fechaFormateada = fecha?date("yyyy-MM-dd")?string("dd/MM/yyyy") /> 
187                                        <#recover> 
188                                            <#assign fechaFormateada = fecha /> 
189                                        </#attempt> 
190 
191                                        <!-- Resumen --> 
192                                        <#assign resumen = docXml.valueOf("//dynamic-element[@field-reference='resumen']/dynamic-content/text()") /> 
193 
194                                        <#if resumen?length gt 700> 
195                                            <#-- Recortar el texto al límite de 700 caracteres --> 
196                                            <#assign truncatedResumen = resumen?substring(0, 700) /> 
197                                             
198                                            <#-- Buscar el último espacio en el texto recortado para no cortar palabras --> 
199                                            <#assign lastSpaceIndex = truncatedResumen?last_index_of(" ") /> 
200 
201                                            <#-- Texto hasta el último espacio antes de los 700 caracteres, seguido de puntos suspensivos --> 
202                                            <#assign resumen = truncatedResumen?substring(0, lastSpaceIndex) + "..." /> 
203                                             
204                                        </#if> 
205 
206                                        <!-- Texto principal --> 
207                                        <#if !resumen?? || !resumen?has_content> 
208                                            <#assign resumen = docXml.valueOf("//dynamic-element[@field-reference='texto']/dynamic-content/text()") /> 
209 
210                                            <#assign resumen = resumen?replace("<strong>", "")?replace("</strong>", "")?replace("<em>", "")?replace("</em>", "")?replace("<u>", "")?replace("</u>", "")?replace("<b>", "")?replace("</b>", "")?replace("<i>", "")?replace("</i>", "")?replace("<span[^>]*>", "")?replace("</span>", "") /> 
211 
212                                            <#if resumen?length gt 700> 
213                                                <#-- Recortar el texto al límite de 700 caracteres --> 
214                                                <#assign truncatedResumen = resumen?substring(0, 700) /> 
215 
216 
217                                                <#-- Buscar el último espacio en el texto recortado para no cortar palabras --> 
218                                                <#assign lastSpaceIndex = truncatedResumen?last_index_of(" ") /> 
219 
220                                                <#-- Texto hasta el último espacio antes de los 700 caracteres, seguido de puntos suspensivos --> 
221                                                <#assign resumen = truncatedResumen?substring(0, lastSpaceIndex) + "..." /> 
222                                                 
223                                            </#if> 
224                                        </#if> 
225 
226                                        <#assign viewURL = cur_aviso.getFriendlyUrl() /> 
227                                        <#assign id = journalArticle.getArticleId() /> 
228                                 
229                                        <#-- Añadir parentPlid (Página de avisos y novedades) como parámetro a viewURL --> 
230                                         
231                                        <#if viewURL?contains("?")> 
232                                            <#assign viewURL = viewURL + "&ida=" + id  + "&prnt=936" /> 
233                                        <#else> 
234                                            <#assign viewURL = viewURL + "?ida=" + id  + "&prnt=936" /> 
235                                        </#if> 
236 
237                                        <#if resumen?? && resumen?has_content> 
238                                        <div class="card"> 
239                                            <div class="card-header"> 
240                                                <h3 class="accordion-header" id="heading${cur_aviso_index}Av"> 
241                                                    <button class="accordion-button collapsed" type="button" data-toggle="collapse" data-target="#collapse${cur_aviso_index}Av" aria-expanded="false" aria-controls="collapse${cur_aviso_index}Av"> 
242                                                        <img class="iconAccordionAv" src="${themeImagePath}/sm/icons/general/arrow_drop_down_round.svg" alt="icono flecha acordeón" title="icono flecha acordeón"> 
243                                                    </button> 
244                                                    <div class="divLinkAv"> 
245                                                        <a href=${viewURL} class="aLinkAv">${titulo}</a> 
246                                                        <p class="card-text">${fechaFormateada}</p> 
247                                                    </div> 
248                                                </h3> 
249                                            </div> 
250                                            <div id="collapse${cur_aviso_index}Av" class="accordion-collapse collapse" aria-labelledby="heading${cur_aviso_index}Av" data-parent="#accordionModelAv"> 
251                                                <div class="accordion-body"> 
252                                                    <div class="p-amAV">${resumen}</div> 
253                                                </div> 
254                                            </div> 
255                                        </div> 
256                                        <#else> 
257                                            <div class="card"> 
258                                                <div class="card-header"> 
259                                                    <h3 class="accordion-header" id="heading${cur_aviso_index}Av"> 
260                                                        <div class="divLinkAv"> 
261                                                            <a href=${viewURL} class="aLinkAv">${titulo}</a> 
262                                                            <p class="card-text">${fechaFormateada}</p> 
263                                                        </div> 
264                                                    </h3> 
265                                                </div> 
266                                            </div> 
267 
268                                        </#if> 
269                                    </#if> 
270                                </#if> 
271                            </#list> 
272                        </div> 
273                    </div> 
274                </div> 
275            </div> 
276            </section> 
277            </#if> 
278             
279        </div> 
280        <div class="col-12 col-lg-4"> 
281        <!-- Section Presentation -->  
282            <#if secTramitacion.gTramitacion.getSiblings()?has_content && (secTramitacion.gTramitacion.tituloTramitacion.getData())?? && (secTramitacion.gTramitacion.tituloTramitacion.getData())?has_content>                 
283                           
284                <section class="sectPresentation"> 
285                    <div class="row"> 
286                        <div class="col-12"> 
287                            <div class="divPresentation"> 
288                                <div class="row"> 
289                                    <div class="col-12"> 
290                                        <h3 class="cH3">${(secTramitacion.gTramitacion.tituloSecTram.getData())!"Tramitación"}</h3> 
291                                    </div> 
292                                    <div class="col-12"> 
293                                        <section class="sectAccordModel m-0"> 
294                                            <div class="divAccorModel"> 
295                                                <div class="accordion accordionModelAv" id="accordionModelTr"> 
296													<div class="card" style="display:none;" > 
297                                                        <div class="card-header"> 
298                                                             
299                                                            <button id="headingpruebaTr" class="accordion-button collapsed" role="heading" aria-level="3" aria-expanded="false" aria-controls="collapsepruebaTr"> 
300                                                                <span>Sección Prueba</span> 
301                                                            </button> 
302 
303                                                        </div> 
304 
305                                                        <div id="collapsepruebaTr" class="accordion-collapse collapse" aria-labelledby="headingpruebaTr" data-parent="#accordionModelTr"> 
306                                                            <div class="accordion-body"> 
307                                                                 
308                                                            </div> 
309                                                        </div> 
310                                                    </div> 
311                                                    <#list secTramitacion.gTramitacion.getSiblings() as cur_secTramitacion> 
312                                                        <#if (cur_secTramitacion.tituloTramitacion.getData())?? && (cur_secTramitacion.tituloTramitacion.getData())?has_content && (cur_secTramitacion.textoTramitacion.getData())?? && (cur_secTramitacion.textoTramitacion.getData())?has_content> 
313                                                     
314                                                            <div class="card"> 
315                                                                <div class="card-header"> 
316                                                                     
317                                                                    <h3 class="accordion-header" id="heading${cur_secTramitacion_index+1}Tr" data-toggle="collapse" data-target="#collapse${cur_secTramitacion_index+1}Tr" aria-expanded="true" aria-controls="collapse${cur_secTramitacion_index+1}Tr"> 
318                                                                        <button class="accordion-button collapsed" type="button" data-toggle="collapse" data-target="#collapse${cur_secTramitacion_index+1}Tr" aria-expanded="false" aria-controls="collapse${cur_secTramitacion_index+1}Tr"> 
319                                                                            <img class="iconAccordionAv" src="${themeImagePath}/sm/icons/general/arrow_drop_down_round.svg" alt="icono flecha acordeón" title="icono flecha acordeón"> 
320                                                                            <span class="span-accbtn">${cur_secTramitacion.tituloTramitacion.getData()}</span> 
321                                                                        </button> 
322                                                                         
323                                                                    </h3> 
324                                                                </div> 
325                                                                <div id="collapse${cur_secTramitacion_index+1}Tr" class="accordion-collapse collapse" aria-labelledby="heading${cur_secTramitacion_index+1}Tr" data-parent="#accordionModelTr"> 
326                                                                    <div class="accordion-body"> 
327                                                                        ${cur_secTramitacion.textoTramitacion.getData()} 
328                                                                    </div> 
329                                                                </div> 
330                                                                 
331                                                            </div> 
332                                                        </#if> 
333                                                    </#list> 
334                                                </div> 
335                                            </div> 
336                                        </section> 
337                                    </div> 
338                                </div> 
339                            </div> 
340                        </div> 
341                    </div> 
342                </section> 
343            </#if> 
344        <!-- FIN PRESENTATION --> 
345        <!-- Section ProcedureCol -->  
346				<#if (secRecursos.tituloCon.getData())??> 
347					<@secRecursosRelacionados secRecursos /> 
348				</#if> 
349             
350        <!-- FIN PROCEDURECOL --> 
351        </div> 
352    </div> 
353</div> 
354 
355<style> 
356u { 
357text-decoration: underline; 
358
359 
360table { 
361  margin-bottom: 36px; 
362  width: 100%;  
363  border-collapse: collapse;  
364  border: none;  
365
366 
367 caption { 
368  caption-side: top; 
369  margin: 12px 0 4px 0; 
370  color: #021A47; 
371  font-family: "Gilroy-Medium"; 
372  font-size: 1.2222rem; 
373  line-height: 1.5556rem; 
374  text-align: left; 
375
376 
377table thead tr th { 
378  padding-right: 0.2rem; 
379	padding-left: 0.2rem; 
380  min-width: 115px; 
381  border-top: none;  
382  border-bottom: 2px solid #FFB600; /* Borde inferior del encabezado */ 
383  color: #021A47; 
384  font-family: "Gilroy-Bold"; 
385  font-size: 0.8889rem; 
386  line-height: 1.2222rem; 
387
388 
389table tbody tr th, table tbody tr td { 
390  padding: 0.2rem; 
391  border: none;  
392  color: #021A47; 
393  font-family: "Gilroy-Regular"; 
394  font-size: 0.8889rem; 
395  line-height: 1.2222rem; 
396
397 
398table tbody tr td { 
399  border-bottom: 2px solid #BCC3D4; 
400
401 
402table tbody tr ul { 
403  padding-left: 20px; 
404
405 
406table tbody tr ul li { 
407  list-style-type: disc; 
408
409 
410table tbody tr ul li a { 
411  font-family: "Gilroy-Regular"; 
412  font-size: 0.7778rem; 
413  line-height: 1.3333rem; 
414
415 
416table tbody tr ul li:has(a) { 
417  color: #0070B7; 
418
419 
420table a { 
421  text-decoration: underline; 
422  color: #0070B7; 
423
424 
425 tbody tr:hover { 
426    background-color: #D0DCE4; 
427
428 
429</style> 

¿Has quedado con dudas?