Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") [in template "20155#20195#1713511" at line 51, column 34]
----
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 assetLinkLocalService = servi... [in template "20155#20195#1713511" at line 51, column 1]
----
1<#assign visorId = "EUi57wpgu2Fa"/>
2<div class="tc-product-details-ctn">
3 <div class="wrapper-ajust">
4 <div class="tc-product-details">
5 <h2 class="title">${NombreProducto.getData()}</h2>
6 <p class="tc-product-desc">${Presentacion.getData()}</p>
7 <a href="/web/tcuida/encuentranos" title="Ver dónde comprar" class="btn btn-primary btn-link">Ver dónde comprar <i class="icon-angle-right"></i></a>
8 </div>
9 <div class="tc-product-img">
10 <div class="bzoom_wrap">
11 <ul id="bzoom">
12 <li>
13 <img class="bzoom_thumb_image" src="${Imagen.getData()}"/>
14 <img class="bzoom_big_image" src="${Imagen.getData()}"/>
15 </li>
16 </ul>
17 </div>
18 </div>
19 </div>
20</div>
21<div class="wrapper-ajust">
22 <div class="tc-product-moreinfo">
23 <#if Ingredientes.getData()?has_content>
24 <div class="text">
25 <h3 class="title-category"> INGREDIENTES </h3>
26 <p class="text-desc">${Ingredientes.getData()}</p>
27 </div>
28 </#if>
29 <#if Propiedades.getData()?has_content>
30 <div class="text">
31 <h3 class="title-category"> PROPIEDADES DEL PRODUCTO </h3>
32 <p class="text-desc">${Propiedades.getData()}</p>
33 </div>
34 </#if>
35 <#if UsoHabitual.getData()?has_content>
36 <div class="text">
37 <h3 class="title-category"> USO HABITUAL </h3>
38 <p class="text-desc">${UsoHabitual.getData()}</p>
39 </div>
40 </#if>
41 <#if ModoDeEmpleo.getData()?has_content>
42 <div class="text">
43 <h3 class="title-category"> MODO DE EMPLEO </h3>
44 <p class="text-desc">${ModoDeEmpleo.getData()}</p>
45 </div>
46 </#if>
47 </div>
48</div>
49
50<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
51<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
52<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
53
54<!--producto que se está viendo-->
55<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) />
56<!-- resourcePrimKey del producto que se está viendo-->
57<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() />
58<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) />
59<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() />
60<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
61
62<#if currentArticleRelatedLinks?has_content>
63<div class="slider-tcuida m-t-0">
64 <div class="wrapper-ajust">
65 <h3 class="title-category">También te puede interesar...</h3>
66 <div data-navigation="nav-crsl" class="slider-product">
67 <#list currentArticleRelatedLinks as related_entry>
68 <section class="crsl-item">
69 <#assign relatedAssetEntryId = related_entry.getEntryId2() />
70 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
71 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
72 <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey) />
73 <#assign relatedArticleId = relatedArticle.getArticleId() />
74 <#assign relatedGroupId = relatedArticle.getGroupId() />
75
76 <!--sacamos la imagen de la estructura-->
77 <#assign docXml = saxReaderUtil.read(relatedArticle.getContent()) />
78 <#assign imagen = docXml.valueOf("//dynamic-element[@name='Imagen']/dynamic-content/text()") />
79
80 <!--Necesitamos el identificador del visor de la página de destino para visualizar el detalle de la noticia-->
81 <#assign visorId2 = "56_INSTANCE_XsftqpXHWywA" />
82 <#assign urlGo2 = "/web/tcuida/ficha-producto/-/journal_content/"+visorId2+"/${relatedGroupId}/${relatedArticleId}?" />
83 <!-- v2
84 --->
85
86 <#assign relatedArticleUrlTitle = relatedArticle.getUrlTitle() />
87 <#assign urlGo = "/web/tcuida/ficha-producto/-/asset_publisher/"+visorId+"/content/${relatedArticleUrlTitle}?" />
88 <a class="link" title="" href="${urlGo}">
89 <figure class="contImg">
90 <img class="img" alt="" src='${imagen}'/>
91 </figure>
92 <h4 class="title-slider"> ${relatedArticle.getTitleCurrentValue()} </h4>
93 </a>
94 </section>
95 </#list>
96 </div>
97 </div>
98 </div>
99</#if>