El 84% de los conductores cree necesario reciclar sus conocimientos: ¿cada cuánto deberíamos hacerlo?

Se ha producido un error al procesar la plantilla.
Java method "com.sun.proxy.$Proxy86.getEntry(String, long)" threw an exception when invoked on com.sun.proxy.$Proxy86 object "com.liferay.asset.internal.service.AssetEntryLocalServiceWrapper@1c5b99"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign asset = assetEntryLocalServic...  [in template "20357736420605#1710429#40806" at line 197, column 33]
----
1<#assign addVisit = ldaBlogNewsletterService.addVisitFromNewsletter(themeDisplay)/> 
2 
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
4<#assign localeCurrent = themeDisplay.getLocale() /> 
5 
6 
7<div class="row"> 
8    <div class="lda__news-detail col-lg-8"> 
9        <div class="lda__img"> 
10 
11            <#if imagen.getData()?? && imagen.getData() != ""> 
12                <img alt="${imagen.getAttribute("alt")}" data-fileentryid="${imagen.getAttribute("fileEntryId")}" src="${imagen.getData()}" /> 
13            </#if> 
14        </div> 
15				 
16        <div class="lda__info-news"> 
17            <div class="lda__tag-wrapper"> 
18                <p class="lda__tag"> 
19 
20                    <span><@liferay.language key="lda.blog.news" /></span> 
21 
22                    <#assign 
23                    journalArticleClassName = "com.liferay.journal.model.JournalArticle" 
24                    journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
25                    article = journalArticleLocalService.getArticle(getterUtil.getLong(scopeGroupId), .vars['reserved-article-id'].data) 
26                    articleResourcePK = article.getArticleResource().getResourcePrimKey() 
27                    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
28                    asset = assetEntryLocalService.getEntry(journalArticleClassName, articleResourcePK) 
29                    categoryList = asset.getCategories() 
30                    /> 
31 
32                    <#if categoryList?has_content> 
33 
34                        <#list categoryList as category> 
35                            <span> - ${category.getName()}</span> 
36                        </#list> 
37 
38                    <#else> 
39 
40                        <span> - <@liferay.language key="lda.blog.section" /></span> 
41 
42                    </#if> 
43 
44                </p> 
45 
46                <#assign authorName = .vars['reserved-article-author-name'].data> 
47                <#-- Retrieve the published date meta data field of the web content --> 
48                <#assign displaydate = .vars['reserved-article-display-date'].data> 
49                 
50                <#-- Save the original page locale for later --> 
51                <#assign originalLocale = .locale> 
52                 
53                <#-- Set the page locale to the portals default locale --> 
54                <#setting locale = localeUtil.getDefault()> 
55                 
56                <#-- Parse the date to a date object --> 
57                <#assign displaydate = displaydate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
58                 
59                <#-- Set the page locale back to the original page locale --> 
60                <#assign locale = originalLocale> 
61 
62                <#if author?? && author.getData() != ""> 
63 
64                    <span class="lda__date">por ${author.getData()} - ${displaydate?string["dd/MM/yyyy"]}</span> 
65 
66                <#else> 
67 
68                    <span class="lda__date">${displaydate?string["dd/MM/yyyy"]}</span> 
69 
70                </#if> 
71 
72 
73            </div> 
74            <div class="lda__share"> 
75                <div class="dropdown"> 
76                    <a class="dropdown-toggle" href="#" id="lda__social-network" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Compartir <i class="icon-share-alt"></i></a> 
77                    <div class="lda__social-network dropdown-menu dropdown-menu-right" aria-labelledby="lda__social-network" style="position: absolute; will-change: transform; top: 0px; transform: translate3d(25px, 30px, 0px); min-width: 0;"> 
78                        <ul> 
79                            <li><a id="facebook-share" href="https://www.facebook.com/LineaDirectaAseguradora/" target="_blank" title="Facebook Línea Directa"><i class="icon-facebook"></i></a></li> 
80                            <li><a id="twitter-share" href="https://twitter.com/LineaDirecta_es" target="_blank" title="Twitter Línea Directa"><svg class="lexicon-icon" focusable="false" role="presentation" viewBox="0 0 512 512" style="height: 0.9em"> 
81<path class="lexicon-icon-outline" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path> 
82</svg></a></li> 
83                            <li><a id="linkedin-share" href="https://www.linkedin.com/company/linea-directa-aseguradora/" target="_blank" title="Linkedin Línea Directa"><i class="icon-linkedin-sign"></i></a></li> 
84                        </ul> 
85                    </div> 
86                </div> 
87            </div> 
88        </div> 
89        <h2 class="h2">${titulo.getData()}</h2> 
90				 
91				<#assign webContentDataAutor = jsonFactoryUtil.createJSONObject(autor.getData())/> 
92<#if webContentDataAutor?? && webContentDataAutor.title??> 
93<div class="container-autor-estimacion d-flex space-between"> 
94	<#assign classPKAutor = webContentDataAutor.classPK?number /> 
95  <#assign relatedJournalArticleAutor = journalArticleLocalService.getLatestArticle(classPKAutor) />	 
96	<#assign documentAutor = saxReaderUtil.read(relatedJournalArticleAutor.getContent())> 
97  <#assign rootElementAutor = documentAutor.getRootElement()> 
98  <#assign defaultLanguageIdAutor = parseXml("@default-locale", rootElementAutor)> 
99	<#assign nombreApellidos = getField("nombreApellidos", localeCurrent, defaultLanguageIdAutor, rootElementAutor)!> 
100	<#assign imagenAutor = getField("imagen", localeCurrent, defaultLanguageIdAutor, rootElementAutor)!> 
101	<#assign tituloAutor = getField("titulo", localeCurrent, defaultLanguageIdAutor, rootElementAutor)!> 
102	<#assign verificado = getField("verificado", localeCurrent, defaultLanguageIdAutor, rootElementAutor)!> 
103	 
104	<div class="content-autor d-flex flex-row align-items-center gap-2 mb-3"> 
105    <#if imagenAutor?has_content && imagenAutor != '{}' && imagenAutor != '{"description":"","title":"","url":""}' && imagenAutor != '{"alt":""}'> 
106			<#assign srcImagen = jsonFactoryUtil.createJSONObject(imagenAutor).url /> 
107			<#if jsonFactoryUtil.createJSONObject(imagenAutor).alt?has_content> 
108				<#assign altImagen = jsonFactoryUtil.createJSONObject(imagenAutor).alt /> 
109			<#else> 
110			  <#assign altImagen = nombreApellidos /> 
111			</#if> 
112			<img class="img-autor" src="${srcImagen}" alt="${altImagen}" width="40" height="40" loading="lazy"/> 
113		<#else> 
114			<#assign inicial = nombreApellidos?substring(0, 1)?upper_case /> 
115      <div class="d-flex align-items-center justify-content-center fw-bold" style="width:40px;height:40px;min-width:40px;background-color:#F7F7F7;color:#1A1A1AA6;font-size: 1.5rem;border-radius:4px;line-height:2rem;"> 
116        ${inicial} 
117      </div> 
118		</#if> 
119		<div class="d-flex flex-column"> 
120		  <#if verificado == "true"> 
121			<div class="d-flex align-items-center autor-verify"> 
122        <span class="low-3 name-autor">${nombreApellidos}</span> 
123        <svg width="16" height="24" viewBox="0 0 16 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 
124					<g clip-path="url(#clip0_969_3519)"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.76818 5.52475C7.42932 4.79907 8.57126 4.79902 9.23237 5.52475L9.91271 6.27149C10.1131 6.49145 10.4012 6.61088 10.6985 6.59701L11.7076 6.55014C12.6884 6.50433 13.4963 7.31218 13.4505 8.29298L13.4029 9.30209C13.3892 9.59926 13.5085 9.88756 13.7285 10.0879L14.4752 10.7682C15.201 11.4294 15.2011 12.5713 14.4752 13.2324L13.7285 13.9128C13.5086 14.1132 13.3891 14.4013 13.4029 14.6986L13.4505 15.7077L13.4492 15.8893C13.3981 16.7261 12.7261 17.3983 11.8893 17.4492L11.7076 17.4505L10.6985 17.403C10.4012 17.3891 10.1131 17.5085 9.91271 17.7285L9.23237 18.4753C8.57126 19.2011 7.42932 19.201 6.76818 18.4753L6.08784 17.7285C5.88744 17.5085 5.59929 17.3892 5.30203 17.403L4.29292 17.4505C3.31221 17.4964 2.50442 16.6883 2.55008 15.7077L2.59695 14.6986C2.61082 14.4012 2.4914 14.1132 2.27143 13.9128L1.52469 13.2324C0.798997 12.5714 0.799128 11.4294 1.52469 10.7682L2.27143 10.0879C2.49143 9.88755 2.61069 9.59932 2.59695 9.30209L2.55008 8.29298C2.50424 7.31218 3.31211 6.5043 4.29292 6.55014L5.30203 6.59701C5.59928 6.61082 5.88744 6.49146 6.08784 6.27149L6.76818 5.52475ZM10.5006 10.3132C10.3054 10.1179 9.98883 10.1179 9.79357 10.3132L7.48042 12.6263L6.5006 11.6465C6.30535 11.4512 5.98883 11.4513 5.79357 11.6465C5.59831 11.8418 5.59831 12.1583 5.79357 12.3535L7.1269 13.6869C7.32217 13.882 7.63869 13.8821 7.83393 13.6869L10.5006 11.0202C10.6958 10.8249 10.6958 10.5084 10.5006 10.3132Z" fill="#BBA35B"/></g> 
125					<defs><clipPath id="clip0_969_3519"><rect width="16" height="16" fill="white" transform="translate(0 4)"/></clipPath></defs> 
126				</svg> 
127      </div> 
128			<#else> 
129			  <span class="low-3 name-autor">${nombreApellidos}</span> 
130			</#if> 
131			<span class="low-2 description-autor">${tituloAutor}</span> 
132		</div> 
133	</div> 
134	</div> 
135</#if> 
136				 
137				 
138        <p class="lda__intro">${encabezado.getData()}</p> 
139        <div class="lda__wrapper"> 
140            ${descripcion.getData()} 
141        </div> 
142				 
143				 
144				<#assign webContentDataAutor = jsonFactoryUtil.createJSONObject(autor.getData())/> 
145   <#if webContentDataAutor?? && webContentDataAutor.title??> 
146     
147    <#assign classPKAutor = webContentDataAutor.classPK?number /> 
148    <#assign relatedJournalArticleAutor = journalArticleLocalService.getLatestArticle(classPKAutor) />	 
149		<div> 
150			  <#assign instanceId = "ldaAutorBox" + relatedJournalArticleAutor.articleId> 
151        <#assign preferences = { 
152          "articleId": relatedJournalArticleAutor.articleId, 
153          "groupId": themeDisplay.getScopeGroupId(), 
154          "portletSetupPortletDecoratorId": "barebone" 
155        } /> 
156			 
157        <@liferay_portlet["runtime"] 
158				defaultPreferences="${freeMarkerPortletPreferences.getPreferences(preferences)}" 
159        instanceId="${instanceId}" 
160        portletProviderAction=portletProviderAction.VIEW 
161        portletName="com_liferay_journal_content_web_portlet_JournalContentPortlet" /> 
162				 
163				<#assign preferences = {} /> 
164      </div> 
165 
166  </#if> 
167				 
168				 
169 
170    </div> 
171 
172    <div class="col-lg-4"> 
173 
174        <#if relatedNews?has_content> 
175            <#if relatedNews.getSiblings()?has_content> 
176             
177                <#assign webContentData = jsonFactoryUtil.createJSONObject(relatedNews.getSiblings()[0].getData()) /> 
178                 
179                <#if webContentData.className?has_content && webContentData.classPK?has_content> 
180                 
181                    <div class="autofit-float autofit-row portlet-header">  
182                        <div class="autofit-col autofit-col-expand"> 
183                            <h2 class="portlet-title-text portlet-title-editable"> 
184     
185                                <@liferay.language key="lda.blog.tags.related.content" /> 
186     
187                            </h2> 
188                        </div> 
189                    </div> 
190                    <div class="lda__others-news"> 
191                        <ul class="lda__list-news"> 
192                            <#list relatedNews.getSiblings() as cur_relatedNews> 
193     
194                                <#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
195                                <#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
196                                <#assign webContentData = jsonFactoryUtil.createJSONObject(cur_relatedNews.getData()) /> 
197                                <#assign asset = assetEntryLocalService.getEntry( webContentData.className, getterUtil.getLong( webContentData.classPK ) ) /> 
198                                <#assign webArticle = asset.getAssetRenderer().getArticle() /> 
199     
200                                <@liferay_journal["journal-article"] 
201                                articleId=webArticle.getArticleId() 
202                                ddmTemplateKey="NOTICIA_LO_ULTIMO" 
203                                groupId=webArticle.getGroupId() 
204                                /> 
205     
206                            </#list> 
207                        </ul> 
208                    </div> 
209                 
210                </#if> 
211                 
212            </#if> 
213        </#if> 
214 
215        <#if .vars['reserved-article-asset-tag-names'].data?has_content> 
216 
217            <div class="news-detail-section mb-3"> 
218 
219                <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> 
220                        <h2 class="portlet-title-text portlet-title-editable"> 
221 
222                            <@liferay.language key="lda.blog.tags.hashtag" /> 
223 
224                        </h2> 
225                    </div> 
226                </div> 
227 
228                <div class="lda__tag-wrapper"> 
229                    <p class="lda__tag"> 
230 
231                        <#list .vars['reserved-article-asset-tag-names'].data?split(",") as tag> 
232                            <#if tag?has_content> 
233 
234                                <#assign customSearchUrlForTag = "/blog/buscador?_com_liferay_portal_search_web_portlet_SearchPortlet_formDate=1636549380698&p_p_lifecycle=0&p_p_mode=view&_com_liferay_portal_search_web_portlet_SearchPortlet_mvcPath=%2Fsearch.jsp&_com_liferay_portal_search_web_portlet_SearchPortlet_cur=1&_com_liferay_portal_search_web_portlet_SearchPortlet_format=&_com_liferay_portal_search_web_portlet_SearchPortlet_keywords=tag%3A%28" + tag + "%29&_com_liferay_portal_search_web_portlet_SearchPortlet_assetTagNames.raw=" + tag + "&q=tag%3A%28" + tag + "%29&tag=" + tag/> 
235 
236                                <a href="${customSearchUrlForTag}" type='button' class='btn btn-outline-secondary m-1'>#${tag}</a> 
237                            </#if> 
238                        </#list> 
239 
240                    </p> 
241                </div> 
242            </div> 
243        </#if> 
244 
245        <#if podcastFile?? && podcastFile.getData()?? && podcastFile.getData() != "" || podcastIframeUrl?? && podcastIframeUrl.getData()?? && podcastIframeUrl.getData() != ""> 
246 
247            <div class="autofit-float autofit-row portlet-header"> <div class="autofit-col autofit-col-expand"> 
248                    <h2 class="portlet-title-text portlet-title-editable"> 
249 
250                        <@liferay.language key="lda.blog.podcast" /> 
251 
252                    </h2> 
253                </div> 
254            </div> 
255 
256        </#if> 
257 
258        <#if podcastFile?? && podcastFile.getData()?? && podcastFile.getData() != ""> 
259 
260            <div class="news-detail-section mb-3"> 
261 
262                <audio controls> 
263                    <source src="${podcastFile.getData()}"> 
264                    <@liferay.language key="lda.blog.browser.not.supported" /> 
265                </audio> 
266 
267            </div> 
268 
269        </#if> 
270 
271        <#if podcastIframeUrl?? && podcastIframeUrl.getData()?? && podcastIframeUrl.getData() != ""> 
272 
273 
274            <iframe src="${podcastIframeUrl.getData()}" width="100%" style="border: 1px solid #D7D7D7;" height="440" frameborder="0" allowfullscreen="0" scrolling="no"></iframe> 
275 
276        </#if> 
277 
278    </div> 
279</div> 
280 
281 
282<script> 
283    $(document).ready(function() { 
284 
285        $('#facebook-share').attr("href", "https://www.facebook.com/sharer.php?u=" + encodeURIComponent(window.location.href)); 
286 
287        $('#twitter-share').attr("href", "https://twitter.com/intent/tweet?original_referer=" + encodeURIComponent(window.location.href) + "&text=" + encodeURI("${titulo.getData()}") + "&url=" + encodeURIComponent(window.location.href)); 
288 
289        $('#linkedin-share').attr("href", "http://www.linkedin.com/shareArticle/?mini=true&url=" + encodeURIComponent(window.location.href)); 
290 
291    }); 
292     
293    Liferay.on("allPortletsReady", function(){ 
294        document.getElementsByClassName("lexicon-icon-twitter")[0].children[0].setAttribute("d", "M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"); 
295				 
296				let btnCompartirGoogle = $("[ref=triggerButton]")[0]; 
297        btnCompartirGoogle.setAttribute("aria-label","Compartir"); 
298    }); 
299</script> 
300 
301 
302<#function getField field languageId defaultLanguageId xml> 
303    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@field-reference='" + field + "']]"> 
304    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@field-reference='" + field + "']]"> 
305    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
306    <#local value = selector.selectSingleNode(xml)!> 
307    <#if value?has_content><#return value.getText()></#if> 
308    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
309    <#local value = selector.selectSingleNode(xml)!> 
310    <#if value?has_content><#return value.getText()></#if> 
311    <#return ""> 
312</#function> 
313 
314<#function parseXml xpath xml> 
315    <#local selector = saxReaderUtil.createXPath(xpath)> 
316    <#local result = selector.selectSingleNode(xml)!> 
317    <#if result?has_content><#return result.getStringValue()></#if> 
318    <#return ""> 
319</#function> 
320<style> 
321.content-autor.gap-2 { gap: 0.5rem; } 
322.content-autor .name-autor { font-size: 1rem; line-height: 1.25rem;} 
323.content-autor .description-autor { font-size: 0.875rem; line-height: 1.25rem; } 
324</style>