Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing:
==> request.getParameter('idProducto')  [in template "20097#20123#49505" at line 4, column 30]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign auxIdProducto = request.getPa...  [in template "20097#20123#49505" at line 4, column 5]
----
1<#assign assetLinkService = staticUtil["com.liferay.asset.kernel.service.AssetLinkLocalServiceUtil"] /> 
2 
3<#if entries?has_content> 
4    <#assign auxIdProducto = request.getParameter('idProducto')/>  
5    <#attempt> 
6        <#assign banderaEntry = 0 /> 
7        <#if auxIdProducto?has_content > 
8 
9            <#assign idEntryUnico = 0 /> 
10            <#attempt> 
11                <#assign idEntryUnico = request.getParameter('idProducto')?number /> 
12            <#recover> 
13                <#assign idEntryUnico = 0 /> 
14            </#attempt> 
15 
16            <#assign banderaEntry = 1 /> 
17             
18            <#assign entryUnicoAux = staticUtil["com.liferay.asset.kernel.service.AssetEntryServiceUtil"] /> 
19            <#assign entryUnico = entryUnicoAux.getEntry(idEntryUnico?number) /> 
20            <#assign relatedAssetList = assetLinkService.getDirectLinks(idEntryUnico?number)/>  
21            <input type="hidden" id="request" value="${request.getParameter('idProducto')}"> 
22            <input type="hidden" id="entryIdHidden" value="${entryUnico.getEntryId()}"> 
23 
24        </#if> 
25 
26 
27        <section class="site-wrapper"> 
28            <header></header> 
29                     
30            <#list entries as curEntry> 
31                <#if banderaEntry == 1 > 
32                    <#assign assetRenderer = entryUnico.getAssetRenderer() /> 
33                <#else> 
34                    <#assign assetRenderer = curEntry.getAssetRenderer() /> 
35                </#if> 
36                <#assign journalArticle = assetRenderer.getArticle() /> 
37                <#assign document = saxReaderUtil.read(journalArticle.getContent()) /> 
38                <#assign rootElement = document.getRootElement() /> 
39                <#assign ImagenDeProducto = rootElement.selectSingleNode("dynamic-element[@name='imagenContenido']") /> 
40                <#assign img = ImagenDeProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
41                <#assign tituloProducto = ImagenDeProducto.selectSingleNode("dynamic-element[@name='titulo']") /> 
42                <#assign titulo = tituloProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
43                <#assign descripcionProducto = ImagenDeProducto.selectSingleNode("dynamic-element[@name='descripcion']") /> 
44                <#assign descripcion = descripcionProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
45                <#assign queEsProducto = ImagenDeProducto.selectSingleNode("dynamic-element[@name='queEs']") /> 
46                <#assign queEs = queEsProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
47                <#assign porqueList = queEsProducto.selectNodes("dynamic-element[@name='porque']") /> 
48                <#--<#assign porque = porqueProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() />--> 
49                <#-- <#assign porqueList = porqueProducto.selectNodes("dynamic-content[@language-id='${locale}']") /> --> 
50 
51                <#--<#assign coberturasProducto = queEsProducto.selectSingleNode("dynamic-element[@name='coberturas']") />--> 
52                <#assign coberturasProducto = queEsProducto.selectNodes("dynamic-element[@name='coberturas']") /> 
53                <#--<#assign coberturas = coberturasProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() />--> 
54                <#assign comoContratarProducto = queEsProducto.selectSingleNode("dynamic-element[@name='comoContratar']") /> 
55                <#assign comoContratar = comoContratarProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
56                 
57                <#assign fileEntry = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') /> 
58 
59                <input type="hidden" id="banderaEntry" value="${banderaEntry}"> 
60 
61                <#assign ciudadProducto = queEsProducto.selectNodes("dynamic-element[@name='ciudad']") /> 
62                <#list ciudadProducto as ciudadActual> 
63                    <#assign ciudad = ciudadActual.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
64                    <input type="hidden" id="ciudad" value="${ciudad}"> 
65                    <#assign telefono = ciudadActual.selectSingleNode("dynamic-element[@name='telefono']").selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
66                    <input type="hidden" id="telefono" value="${telefono}"> 
67                    <#assign email = ciudadActual.selectSingleNode("dynamic-element[@name='email']").selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
68                    <input type="hidden" id="email" value="${email}"> 
69                </#list> 
70 
71                <#assign faqsProducto = queEsProducto.selectNodes("dynamic-element[@name='faqs']") /> 
72                <#list faqsProducto as faqActual> 
73                    <#assign faq = faqActual.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
74                    <input type="hidden" id="faq" value="${faq}"> 
75                    <#assign pregunta = faqActual.selectSingleNode("dynamic-element[@name='pregunta']").selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
76                    <input type="hidden" id="pregunta" value="${pregunta}"> 
77                </#list> 
78 
79                <#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
80 
81                <#assign recomendadoProducto = queEsProducto.selectNodes("dynamic-element[@name='accesoRecomendado']") /> 
82 
83                <div class="container">     
84                     
85                    <div class="row justify-content-md-center mt-5">         
86                        <div class="col-12" style="padding-right: 0px;"> 
87                            <div class="view overlay"> 
88                                <img class="card-img-top" src="${fLinkImg(img)}" alt="Sample image"> 
89                                <div class="gradiente_negro"></div> 
90                            </div> 
91                            <div class="carousel-caption"> 
92                                <h3 class="h3-responsive titulo text-left">${titulo}</h3>                         
93                            </div>                     
94                        </div> 
95                         
96                    </div> 
97 
98                    <div class="col-12 mt-5 masonry-item wow fadeInUp animation-delay-2"> 
99                        <div class="mr-auto"> 
100                             
101                        </div>				 
102                    </div> 
103                     
104                     
105                    <div class="row masonry-container"> 
106                         
107                        <div class="col-12 col-sm-6 col-md-9"> 
108                            <div class="card mb-4 borde-izquierdo wow fadeInUp animation-delay-2"> 
109                                <div class="card-body text-justify"> 
110                                    <h3 class="footer-title">¿Qué es?</h3> 
111                                    ${queEs} 
112                                </div> 
113                            </div> 
114                             
115 
116                            <#if porqueList[0].selectSingleNode("dynamic-content[@language-id='${locale}']").getData()?has_content> 
117                            <#--<#if porqueList?size == 1>--> 
118                                <div class="card mb-4 borde-izquierdo wow fadeInUp animation-delay-2"> 
119                                    <div class="card-body text-justify"> 
120                                        <h3 class="footer-title">¿Por qué contratar con TMX?</h3>  
121                                        <ol> 
122                                            <#list porqueList as cur_porque> 
123                                                <#assign porque = cur_porque.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
124                                                <li value="${cur_porque?index+1}">${porque}</li> 
125                                            </#list> 
126                                        </ol> 
127                                    </div> 
128                                </div> 
129                            </#if>         
130                         
131                            <div class="card mb-4 borde-izquierdo wow fadeInUp animation-delay-2"> 
132                                <div class="card-body text-justify">                     
133                                    <h3 class="footer-title">Coberturas</h3> 
134                                    <ul> 
135                                        <#list coberturasProducto as cur_coberturas> 
136                                            <#assign coberturas = cur_coberturas.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
137                                            <li type="disc">${coberturas}</li> 
138                                            <#assign sub1List = cur_coberturas.selectNodes("dynamic-element[@name='sub1']") /> 
139                                            <#if sub1List[0].selectSingleNode("dynamic-content[@language-id='${locale}']").getData()?has_content> 
140                                                <ul> 
141                                                     
142                                                    <#list sub1List as cur_sub1List> 
143                                                        <#assign sub1Txt = cur_sub1List.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
144                                                        <li type="circle">${sub1Txt}</li> 
145                                                        <#assign sub2List = cur_sub1List.selectNodes("dynamic-element[@name='sub2']") /> 
146                                                        <#if sub2List[0].selectSingleNode("dynamic-content[@language-id='${locale}']").getData()?has_content> 
147                                                            <ul> 
148                                                            <#list sub2List as cur_sub2List> 
149                                                                <#assign sub2Txt = cur_sub2List.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
150                                                                <li type="square">${sub2Txt}</li> 
151                                                            </#list> 
152                                                            </ul> 
153                                                        </#if> 
154                                                    </#list> 
155                                                </ul> 
156                                            </#if> 
157                                        </#list> 
158                                    </ul>              
159                                </div> 
160                            </div> 
161                         
162                            <div class="card mb-4 borde-izquierdo wow fadeInUp animation-delay-2"> 
163                                <div class="card-body text-justify"> 
164                                    <h3 class="footer-title">¿Cómo contratar?</h3> 
165                                    ${comoContratar} 
166                                </div> 
167                            </div> 
168                        </div> 
169                         
170                         
171                        <div class="col-12 col-sm-6 col-md-3"> 
172                             
173                                     
174                            <div class="row card borde-izquierdo wow fadeInUp animation-delay-2"> 
175                                <div class="col-12 mb-4 mt-4 datoCotiza"> 
176                                    <h3 class="h3-responsive ml-3">Obtener una<br>Cotización<br>55 5278 2100</h3>                     
177                                    <div class="col-12 mt-2"> 
178 
179                                        <#list ciudadProducto as ciudadActual> 
180                                            <#assign ciudad = ciudadActual.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
181                                            <#assign telefono = ciudadActual.selectSingleNode("dynamic-element[@name='telefono']").selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
182                                            <#if ciudadActual.selectSingleNode("dynamic-element[@name='email']").selectSingleNode("dynamic-content[@language-id='${locale}']").getData()?has_content > 
183                                                <#assign email = ciudadActual.selectSingleNode("dynamic-element[@name='email']").selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
184                                                <p><small style="font-weight: 600;">${ciudad}</small><br><small>${telefono}<br><br><a href="mailto:${email}">${email}</a></small></p> 
185                                            <#else> 
186                                                <p><small style="font-weight: 600;">${ciudad}</small><br><small>${telefono}</small></p> 
187                                            </#if> 
188                                        </#list> 
189                                    </div>                     
190                                </div> 
191                            </div> 
192                             
193 
194                            <#assign documentoProducto = queEsProducto.selectNodes("dynamic-element[@name='documento']") /> 
195                            <#if documentoProducto[0].selectSingleNode("dynamic-content[@language-id='${locale}']").getData()?has_content> 
196 
197                                <#list documentoProducto as docActual> 
198                                    <#assign doc = docActual.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
199                                    <#list doc?split("/") as docList> 
200                                        <input type="hidden" id="docList" value="${docList}"> 
201                                    </#list> 
202                                    <input type="hidden" id="doc" value="${doc}"> 
203                                </#list> 
204 
205                                <div class="row mt-3 card borde-izquierdo"> 
206                                    <div class="col-12 mb-4 mt-4"> 
207                                        <h3 class="h3-responsive ml-3">Formatos:</h3> 
208                                        <#list documentoProducto as docActual> 
209                                            <#assign doc = docActual.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
210                                            <#--<#list documentoProducto as docActual>--> 
211                                                <#assign doc = docActual.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
212                                                <#assign docJson = jsonFactoryUtil.createJSONObject(doc) /> 
213                                                <#-- 
214                                                <#list doc?split("/") as docList> 
215                                                    <#if docList?index == 2> 
216                                                        <#assign groupDocId = docList /> 
217                                                    </#if> 
218                                                </#list> 
219                                                 
220                                                <#assign uuIdAux = doc?keep_after_last("/") /> 
221                                                --> 
222                                                <#assign uuId = docJson.uuid /> 
223                                                <#assign groupDocId = docJson.groupId /> 
224                                                 
225                                                <input type="hidden" id="uuId" value="${uuId}"> 
226                                                <input type="hidden" id="groupDocId" value="${groupDocId}" > 
227                                                <#assign file2 = fileEntry.getFileEntryByUuidAndGroupId(uuId ,groupDocId?number)> 
228                                                <div class="row"> 
229                                                    <div class="col-2 mt-2"> 
230                                                        <a class="aColor" onclick="abreArchivo('${groupDocId}','${uuId}')"><i class="sidebar-icon far fa-file-pdf" aria-hidden="true"></i></a> 
231                                                    </div> 
232                                                    <div class="col-10"><a class="aColor" onclick="abreArchivo('${groupDocId}','${uuId}')">${file2.fileName} <br>(${file2.extension} - ${(file2.size)} Bytes)</a></div> 
233                                                </div> 
234                                            <#--</#list>--> 
235                                        </#list> 
236                                         
237                                    </div> 
238                                </div> 
239 
240                            </#if> 
241                                 
242                                 
243                             
244                             
245                        </div>            
246                    </div> 
247                </div> 
248 
249            <#if banderaEntry == 1 > 
250                <#break> 
251            </#if>     
252 
253            </#list> 
254 
255        </section> 
256 
257 
258 
259        <!-- productos relacionados ========================================================== --> 
260        <div class="container"> 
261         
262            <div class="row justify-content-md-center wow fadeIn" data-wow-delay="0.3s"> 
263                 
264                <div class="container text-center mb-6"> 
265                    <h1 class="font-weight-bold center-block mt-4 mb-4 animated zoomInDown animation-delay-5 footer-title">Productos Relacionados</h1>                     
266                </div> 
267            </div> 
268 
269            <div class="row masonry-container"> 
270                <div class="owl-carousel owl-theme wow fadeInUp animation-delay-2">        
271                 
272                    <#if relatedAssetList?has_content> 
273                        <#list relatedAssetList as relatedAsset> 
274                            <#-- 
275                            <#if relatedAsset?index == 3> 
276                                <#break> 
277                            </#if> 
278                            --> 
279 
280                            <#assign currentEntry = entryUnicoAux.getEntry(relatedAsset.getEntryId2()) /> 
281                            <#assign assetRenderer = currentEntry.getAssetRenderer() /> 
282                            <#assign journalArticle = assetRenderer.getArticle() /> 
283                            <#assign document = saxReaderUtil.read(journalArticle.getContent()) /> 
284                            <#assign rootElement = document.getRootElement() /> 
285                            <#assign ImagenDeProducto = rootElement.selectSingleNode("dynamic-element[@name='imagenContenido']") /> 
286                            <#assign img = ImagenDeProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
287                            <#assign tituloProducto = ImagenDeProducto.selectSingleNode("dynamic-element[@name='titulo']") /> 
288                            <#assign titulo = tituloProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
289                            <#assign descripcionProducto = ImagenDeProducto.selectSingleNode("dynamic-element[@name='descripcion']") /> 
290                            <#assign descripcion = descripcionProducto.selectSingleNode("dynamic-content[@language-id='${locale}']").getData() /> 
291                            <#assign link = themeDisplay.getPortalURL() + "/web/portal-agentes/productos1" > 
292 
293                            <div class="item tarjetas tarjeta" > 
294                                 
295                                <#assign linkE = link +"?idProducto=" + relatedAsset.getEntryId2()> 
296 
297                                <article class="mb-4 wow materialUp animation-delay-5">           
298                                    <div class="card card-cascade narrower"> 
299                                    <div class="view overlay"> 
300                                        <img class="card-img-top" src="${fLinkImg(img)}" alt="Card image cap"> 
301                                    </div> 
302                                    <div class="card-body"> 
303                                        <h4 class="card-title alturaTit">${titulo} </h4> 
304                                        <br/> 
305                                        <p class="card-text contenedores text-justify mayorAltura"> ${descripcion} </p>                             
306                                        <div class="row vermas"> 
307                                            <div class="col-md-12 mb-1"><a href="${linkE}" class="btn bt_azul btn-sm btn-block animate-icon">Ver más</a></div> 
308                                        </div> 
309                                    </div> 
310                                    </div> 
311                                </article> 
312 
313                            </div> 
314 
315                        </#list> 
316                    </#if> 
317                </div> 
318            </div> 
319 
320        </div> 
321        <!-- productos relacionados ========================================================== --> 
322 
323    <#recover> 
324 
325        <!-- 
326        <div class="container-fluid"> 
327            <div class="col-12 mt-4"> 
328                <p class="font-weight-bold h2-responsive">ENLACE NO ENCONTRADO</p> 
329            </div> 
330        </div> 
331        --> 
332        <#assign idEntryUnico = 0 /> 
333        <#attempt> 
334            <#assign idEntryUnico = request.getParameter('idProducto')?number /> 
335        <#recover> 
336            <#assign idEntryUnico = 0 /> 
337        </#attempt> 
338 
339         
340 
341        <div class="container"> 
342            <div class="row"> 
343                <div class="col-md-12"> 
344                    <div class="error-template"> 
345                        <h1>Oops!</h1> 
346                        <img src="http://172.25.10.42:8080/documents/32547/35477/Tmx404.png/88cb4804-6b2d-e477-b1e8-9a395ca30524?t=1597688962458" class="rounded mx-auto d-block"> 
347                        <h2>Not Found</h2> 
348                        <input type="hidden" id="request" value="${idEntryUnico}"> 
349                        <div class="error-details"> 
350                            Lo sentimos, se ha producido un error, no se ha encontrado la página solicitada. 
351                        </div> 
352                        <div class="error-actions"> 
353                            <a onclick="goToHome();" class="btn btn-primary btn-lg"><span class="glyphicon glyphicon-home"></span> 
354                                Ir a Inicio 
355                            </a> 
356                            <a href="mailto:atencion_tokiomarine@tokiomarine.com.mx" target="_blank" class="btn btn-default btn-lg"><span class="glyphicon glyphicon-envelope"></span> Contactar a Soporte </a> 
357                        </div> 
358                    </div> 
359                </div> 
360            </div> 
361        </div> 
362 
363    </#attempt> 
364         
365 
366 
367</#if> 
368 
369<#function fLinkImg imgInfo > 
370    <#assign imgJson = jsonFactoryUtil.createJSONObject(imgInfo) /> 
371     
372    <#return themeDisplay.getPortalURL()+'/documents/'+imgJson.groupId+'/'+imgJson.classPK+'/'+imgJson.title+'/'+imgJson.uuid > 
373</#function> 
374 
375<style type="text/css"> 
376    .col-12 .borde-izquierdo .col-12.mb-4.mt-4{ 
377        flex: none; 
378
379    .container h3.footer-title{ 
380        color: #01579b; 
381
382    .container h1.footer-title{ 
383        color: #01579b; 
384
385    .site-wrapper .borde-izquierdo a { 
386        color: #0275d8; 
387
388    .titulo { 
389        color: #FFFFFF; 
390
391 
392    .site-wrapper .related .card { 
393        height: 100%; 
394        display: flex; 
395
396 
397    .site-wrapper .related .card-block { 
398        display: flex; 
399        justify-content: space-between; 
400        flex-direction: column; 
401
402 
403    .site-wrapper .related .card.card-footer { 
404        align-self: flex-end; 
405        flex: 1 1 auto; 
406    }     
407    .site-wrapper .related .card .vermas { 
408        position: absolute; 
409        width: 97%; 
410        bottom: 20px; 
411
412 
413    .site-wrapper .card .datoCotiza{ 
414        padding-left: 5px; 
415        padding-right: 5px; 
416
417 
418    .error-template{ 
419        padding: 40px 15px;text-align: center; 
420
421    .error-actions { 
422        margin-top:15px; 
423        margin-bottom:15px; 
424
425    .error-actions .btn { 
426        margin-right:10px;  
427
428 
429    .site-wrapper a:not([href]):not([tabindex]) { 
430    	cursor: pointer; 
431	    text-decoration: none; 
432	    color: #0275d8; 
433	    transition: all 0.2s ease-in-out; 
434	    transition-property: all; 
435	    transition-duration: 0.2s; 
436	    transition-timing-function: ease-in-out; 
437	    transition-delay: 0s; 
438
439 
440    .site-wrapper a:not([href]):not([tabindex]):hover { 
441    	text-decoration: underline; 
442    	color: #0275d8; 
443
444    .site-wrapper .bt_azul { 
445        background-color: #008ad3; 
446        color: #FFFFFF; 
447
448</style> 
449 
450<script type="text/javascript"> 
451$( document ).ready(function() { 
452     
453    var tam = ${entries?size}; 
454    if(tam <= 1){ 
455        tam = ${entries?size}; 
456        window.location.href = $(".card-body .btn-sm.btn-block").attr("href"); 
457    }else{ 
458        tam=3; 
459        $('.owl-carousel:not(".owl-carousel-unique")').owlCarousel({ 
460            loop: true, 
461            margin: 10, 
462            nav: true, 
463            dots:false, 
464            responsiveClass: true, 
465            responsive: { 
466                0: { 
467                    items: 1, 
468                }, 
469                600: { 
470                    items: tam, 
471                }, 
472                1000: { 
473                    items: tam, 
474                    margin: 20, 
475
476
477        }); 
478        var heights = $(".mayorAltura").map(function() { 
479            console.log("height"); 
480            console.log($(this).height()); 
481            return $(this).height(); 
482        }).get(); 
483     
484        maxHeight = Math.max.apply(null, heights); 
485     
486        $(".mayorAltura").height(maxHeight); 
487 
488        /*************************************************/ 
489 
490        var heights = $(".alturaTit").map(function() { 
491            console.log("height"); 
492            console.log($(this).height()); 
493            return $(this).height(); 
494        }).get(); 
495     
496        maxHeight = Math.max.apply(null, heights); 
497     
498        $(".alturaTit").height(maxHeight); 
499 
500
501 
502 
503    console.log("tam 2="+tam); 
504    /* convertir en slider */ 
505    $(".entry-title.taglib-categorization-filter").attr("hidden","true"); 
506}); 
507 
508function goToHome(){ 
509    showLoader(); 
510    window.location.href = window.location.origin; 
511
512 
513function abreArchivo(groupId, uuid){ 
514    var stringURL = window.location.origin + window.location.pathname.replace(window.location.pathname.split("/")[3], 'pdf-viewer?uuid=') + uuid +"&groupId=" + groupId; 
515    window.open(stringURL, '_blank'); 
516
517 
518</script>