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 "20115#20151#36606" at line 4, 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 "20115#20151#36606" at line 4, column 1]
----
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
2<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
3<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
4<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
5
6<!-- Article Data -->
7<#assign journalArticleId = .vars['reserved-article-id'].data />
8<#assign resourcePK = journalArticleLocalService.getArticle(groupId, journalArticleId).getResourcePrimKey() />
9<#assign entryId = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePK).getEntryId() />
10<#assign discursosOintervenciones = assetLinkLocalService.getDirectLinks(entryId?number)/>
11
12<section class="mj-section">
13 <div class="gridContainer mj-container">
14 <article class="mj-article">
15 <div class="row">
16 <div class="col-sm-8">
17 <h2 class="mj-article__title">${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), .vars['reserved-article-title'].data)}</h2>
18
19 <div class="mj-article__txt">
20 <#if FechaDeNacimiento.data != "" >
21 <strong>Fecha de nacimiento: </strong>${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), FechaDeNacimiento.getData())}<br>
22 </#if>
23
24 <#if CiudadDeNacimiento.data != "" >
25 <strong>Ciudad de nacimiento: </strong>${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), CiudadDeNacimiento.getData())}<br>
26 </#if>
27
28 <#if FechaDeDefuncionFieldSet.FechaDeDefuncion.data != "" >
29 <strong>Defunción: </strong>${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), FechaDeDefuncionFieldSet.FechaDeDefuncion.getData())}<br>
30 </#if>
31
32 <#assign FechaDeDefuncionFieldSet_FechaNumDeDefuncion_Data = getterUtil.getString(FechaDeDefuncionFieldSet.FechaNumDeDefuncion.getData())>
33 <#if validator.isNotNull(FechaDeDefuncionFieldSet_FechaNumDeDefuncion_Data)>
34 <strong>Fecha de defunción: </strong>${customDate(FechaDeDefuncionFieldSet_FechaNumDeDefuncion_Data)}<br>
35 </#if>
36
37 <#if CiudadDeDefuncion.data != "" >
38 <strong>Ciudad de defunción: </strong>${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), CiudadDeDefuncion.getData())}<br>
39 </#if>
40 <#if (NombramientoFieldSet.Nombramiento.getData())??>
41 <strong>Nombramiento: </strong>${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), NombramientoFieldSet.Nombramiento.getData())}<br>
42 </#if>
43
44 <#if (CeseFieldSet.Cese.getData())??>
45 <strong>Cese: </strong>${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), CeseFieldSet.Cese.getData())}<br>
46 </#if>
47
48 <#assign CeseFieldSet_FechaDeCese_Data = getterUtil.getString(CeseFieldSet.FechaDeCese.getData())>
49
50 <#if validator.isNotNull(CeseFieldSet_FechaDeCese_Data)>
51 <strong>Fecha de cese: </strong>${customDate(CeseFieldSet_FechaDeCese_Data)}<br>
52 </#if>
53 </div>
54 </div>
55
56 <div class="col-sm-4">
57 <a href="${Imagen.getData()}" target="_blank">
58 <#if Imagen.getData()?? && Imagen.getData() !="">
59 <#assign pictureAttributesKeyValue = { "class": "mj-article__fig mj-article__fig--right"} />
60 <#assign imgAttributesKeyValue = { "class": "mj-article__img", "alt": Imagen.getAttribute("alt") } />
61 <#assign imgHtml = customAmImageUtil.createAMImageByFileEntryId(Imagen.getAttribute("fileEntryId"),600,pictureAttributesKeyValue,imgAttributesKeyValue)/>
62 ${imgHtml}
63 </#if>
64 </a>
65 </div>
66 </div>
67
68
69 <div class="row mj-vertical-tabs" data-function="mj-verticalTabs" id="vertical-tabs">
70 <div class="col-md-4">
71 <nav class="mj-vertical-tabs__nav">
72 <ul class="mj-vertical-tabs__list" id="biografia-vertical-box">
73
74 <li class="mj-vertical-tabs__item">
75 <a href="#${htmlUtil.escapeHREF(ContextoHistorico.getName())}" title="Contexto Histórico" class="mj-vertical-tabs__link">CONTEXTO HISTÓRICO</a>
76 </li>
77
78 <#if TituloDeMemoria.getData() != "" && TituloDeMemoria.Memoria.getData() != "">
79 <li class="mj-vertical-tabs__item">
80 <a href="#${htmlUtil.escapeHREF(TituloDeMemoria.getName())}" title="Memorias" class="mj-vertical-tabs__link">MEMORIAS</a>
81 </li>
82 </#if>
83
84 <li class="mj-vertical-tabs__item" id="biografia-discursos">
85 <a href="#discursos" title="Discursos" class="mj-vertical-tabs__link">DISCURSOS E INTERVENCIONES</a>
86 </li>
87
88 </ul>
89 </nav>
90 </div>
91
92 <div class="col-md-8">
93 <div class="mj-vertical-box__item" id="${ContextoHistorico.getName()}" data-function="mj-verticalBox">
94 <h3 class="mj-vertical-box__txt">Contexto Histórico ${.vars['reserved-article-title'].data}</h3>
95 <div class="mj-article__txt">
96 ${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), ContextoHistorico.getData())}
97 </div>
98 </div>
99
100 <div class="mj-vertical-box" id="${TituloDeMemoria.getName()}" data-function="mj-verticalBox">
101 <#if TituloDeMemoria.getSiblings()?has_content >
102 <#list TituloDeMemoria.getSiblings() as cur_TituloDeMemoria>
103 <#if cur_TituloDeMemoria.getData() != "" && cur_TituloDeMemoria.Memoria.getData() != "" >
104 <#assign uuid = jsonFactoryUtil.createJSONObject(cur_TituloDeMemoria.Memoria.data).getString("uuid") />
105 <#if dlFileEntryLocalService.fetchDLFileEntryByUuidAndGroupId(uuid,scopeGroupId)?? >
106 <#assign fileEntry = dlFileEntryLocalService.fetchDLFileEntryByUuidAndGroupId(uuid,scopeGroupId) />
107 <div class="row mj-vertical-box__item">
108 <p class="mj-vertical-box__txt col-xs-12 col-sm-8">${customSanitizerUtil.sanitizedField(themeDisplay.getLayout(), themeDisplay.getUserId(), cur_TituloDeMemoria.getData())}</p>
109 <#if fileEntry.description != "" >
110 <p class="mj-vertical-box__txt col-xs-12 col-sm-8">
111 <a href="${fileEntry.description}" target="_blank">Versión navegable</a>
112 </p>
113 </#if>
114 <div class="col-xs-12 col-sm-4">
115 <a href="${htmlUtil.escapeHREF(cur_TituloDeMemoria.Memoria.getData())}" class="mj-vertical-box__link" title="Descargar" target="_blank">Descargar</a>
116 </div>
117 </div>
118 </#if>
119 </#if>
120 </#list>
121 </#if>
122 </div>
123
124 <div class="mj-vertical-box" id="discursos" data-function="mj-verticalBox">
125 <div id="trayser-list">
126 <ul class="sorteableList">
127
128 <#list discursosOintervenciones as doc>
129 <#assign discursoEntry = assetEntryLocalService.fetchEntry(doc.getEntryId2())/>
130 <#assign discursoArticle = journalArticleLocalService.fetchLatestArticle(discursoEntry.getClassPK())/>
131 <li class="list__item">
132 <@liferay_journal["journal-article"]
133 articleId=discursoArticle.articleId
134 ddmTemplateKey="TMP_DISCURSOS_O_INTERVENCIONES"
135 groupId=discursoArticle.groupId?number
136 />
137 </li>
138 </#list>
139 </ul>
140 <#if (discursosOintervenciones?size > 10) >
141 <div class="paginator taglib-page-iterator">
142
143 <small class="search-results">
144 <@liferay.language key="pagination.results"/>
145 </small>
146 <div class="lfr-pagination-buttons">
147 <button class="page-item" data-page="prev"><span class="page-item__text"><@liferay.language key="search.previous"/></span></button>
148 <button class="page-item" data-page="next"><span class="page-item__text"><@liferay.language key="search.next"/></span></button>
149 </div>
150 </div>
151 </#if>
152 </div>
153 </div>
154 </div>
155 </div>
156 </article>
157 </div>
158</section>
159
160
161<#function customDate dateString >
162 <#assign customDateFormat = "">
163
164 <#if validator.isNotNull(dateString)>
165 <#assign dateObj = dateUtil.parseDate("yyyy-MM-dd", dateString, locale) />
166 <#assign customDateObj = dateUtil.getDate(dateObj, "dd'/'MM'/'yyyy", locale) />
167 <#assign customDateFormat = customDateObj />
168 <#else>
169 <#assign customDateFormat = "">
170 </#if>
171
172 <#return customDateFormat >
173</#function>