Fondo
Hiba jelentkezett a sablon feldolgozása során.
Java method "static com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil.getAssetCategory(long)" couldn't be called: The value of the 1st argument was null, but the target Java parameter type (long) is primitive and so can't store null.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign category = assetCategoryLocal...  [in template "15553970#15554109#17210299" at line 31, column 1]
----
1<#-- OBTENER CONTENIDOS CON LA CATEGORIA PASADA --> 
2 
3 
4 
5<#assign listCategoriesFilter = []> 
6<#if request.getParameter("categoryId")??> 
7    <#assign listCategoriesFilter =  [request.getParameter("categoryId")?number]> 
8</#if> 
9<#assign pageNumber = 1> 
10<#if request.getParameter("page")??> 
11    <#assign pageNumber =  request.getParameter("page")?number> 
12</#if> 
13 
14<#assign delta = portletPreferences["delta"][0]?number> 
15<#assign end = pageNumber * delta> 
16<#assign start = end - delta> 
17 
18<#assign JournalArticleLocalService =  serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
19<#assign ddmStructureService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService") /> 
20<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
21<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
22<#assign search = assetEntryQuery.setAllCategoryIds(listCategoriesFilter)> 
23<#assign searchStart  = assetEntryQuery.setStart(start)> 
24<#assign searchEnd = assetEntryQuery.setEnd(end)> 
25<#assign listEntries = assetEntryQueryService.getEntries(assetEntryQuery)> 
26<#assign listEntriesSize = 0> 
27 
28<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]/> 
29<#assign assetCategoryPropertyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryPropertyLocalServiceUtil"]/> 
30<#assign assetVocabularyLocalServiceUtil =  staticUtil["com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil"]/> 
31<#assign category = assetCategoryLocalServiceUtil.getAssetCategory(listCategoriesFilter[0])/> 
32<#assign titleCategory = category.getName() /> 
33<#assign vocabulary = assetVocabularyLocalServiceUtil.getAssetVocabulary(category.vocabularyId) /> 
34 
35<#attempt> 
36    <#assign cat =  assetCategoryPropertyLocalServiceUtil.getCategoryProperties(category.categoryId)/> 
37    <#assign headerImg = ""> 
38    <#if categories ??> 
39        <#list cat as category> 
40            <#if category.key == "image"> 
41                <#assign categoryImg = assetCategoryPropertyLocalServiceUtil.getCategoryProperty(category.getCategoryId(),"image")/> 
42                <#assign headerImg = categoryImg.getValue()?replace('_', '/')> 
43            </#if> 
44        </#list> 
45    </#if> 
46     
47<#recover> 
48    <#assign headerImg = ""> 
49</#attempt> 
50 
51<#attempt> 
52    <#if vocabulary.name?contains("Centro")> 
53        <div class="tituloCategoria"> 
54            PUBLICACIONES DEL ${titleCategory} 
55        </div> 
56    <#else> 
57        <div class="tituloCategoria"> 
58            PUBLICACIONES DE ${titleCategory} 
59         </div> 
60    </#if> 
61<#recover> 
62</#attempt> 
63 
64<#assign counter = 0> 
65 
66<#assign urlBase = "" /> 
67<#assign urlFriendly = themeDisplay.getLayout().getFriendlyURL() /> 
68<#assign urlCurrent = themeDisplay.getURLCurrent() /> 
69<#if urlCurrent?contains(urlFriendly)> 
70    <#assign urlBase = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()?keep_before_last("/")?remove_ending("/")  /> 
71<#else> 
72    <#assign urlBase = themeDisplay.getPortalURL() +themeDisplay.getURLCurrent()?remove_ending("/")  /> 
73</#if> 
74 
75 
76<div class="row"> 
77     
78    <#list listEntries as curEntry> 
79        <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, curEntry, true) /> 
80 
81        <#assign renderer = curEntry.getAssetRenderer()> 
82        <#assign className = renderer.getClassName()> 
83         
84        <#if className == "com.liferay.journal.model.JournalArticle"> 
85            <#assign journalArticle = renderer.getArticle()> 
86            <#assign jaResourcePrimKey = journalArticle.getResourcePrimKey()> 
87            <#assign reproducciones = journalArticle.getExpandoBridge().getAttribute('reproducciones')> 
88            <#assign document = saxReaderUtil.read(journalArticle.getContent())> 
89            <#assign rootElement = document.getRootElement()> 
90            <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)> 
91            <#assign jArticleDDMStructureKey = journalArticle.getDDMStructureKey()> 
92             
93            <#assign ddmStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService") /> 
94            <#assign structures = ddmStructureLocalService.getStructures(themeDisplay.getScopeGroupId()) /> 
95            <#assign centroStructureKey = "" /> 
96            <#list structures as structure> 
97                <#if structure.getName(locale) == "Radio"> 
98                    <#assign radioStructureKey = structure.getStructureKey() /> 
99                </#if> 
100            </#list> 
101            <#if jArticleDDMStructureKey == radioStructureKey> 
102                <#assign listEntriesSize = listEntriesSize + 1> 
103                <#assign title = getField("Título", locale, defaultLanguageId, rootElement)!> 
104 
105                <#-- CAMPOS DE RADIO --> 
106                <#assign resume = getField("Resumen", locale, defaultLanguageId, rootElement)!> 
107                <#attempt> 
108                <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='imagen']")> 
109                <#if xPathSelector.selectSingleNode(rootElement)??> 
110                    <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
111                    <#if isJson(img)> 
112                        <#assign imgJson = jsonFactoryUtil.createJSONObject(img)> 
113                        <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid > 
114                    </#if> 
115                </#if> 
116                <#recover> 
117                    <#assign imgUrl = ""> 
118                </#attempt> 
119 
120                <#-- CAMPOS DE CENTRO --> 
121                <#assign enlace = getField("Enlace", locale, defaultLanguageId, rootElement)!> 
122                <#attempt> 
123                    <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Logo']")> 
124                     <#assign logoUrl = ""> 
125                    <#if xPathSelector.selectSingleNode(rootElement)??> 
126                        <#assign logo = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
127                         
128                        <#if isJson(logo)> 
129                            <#assign logoJson = jsonFactoryUtil.createJSONObject(logo)> 
130                            <#assign logoUrl = "/documents/" + logoJson.groupId + "/" + logoJson.uuid > 
131                        </#if>  
132                    </#if>  
133                <#recover> 
134                    <#assign logoUrl = ""> 
135                </#attempt> 
136                 
137 
138                <#if counter = 0 && headerImg == ""> 
139                    <#if imgUrl != ""> 
140                        <#assign headerImg = imgUrl> 
141                    <#elseif logoUrl != ""> 
142                        <#assign headerImg = logoUrl> 
143                    </#if> 
144                </#if> 
145 
146                <#attempt> 
147                <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='ArchivoDeAudioVideo']")> 
148                <#assign audioVideoUrl = ""> 
149                <#if xPathSelector.selectSingleNode(rootElement)??> 
150                    <#assign audioVideo = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
151                    <#if isJson(audioVideo)> 
152                        <#assign audioVideoJson = jsonFactoryUtil.createJSONObject(audioVideo)> 
153                        <#assign audioVideoUrl = "/documents/" + audioVideoJson.groupId + "/" + audioVideoJson.uuid > 
154                    </#if> 
155                 </#if> 
156                <#recover> 
157                    <#assign audioVideoUrl = ""> 
158                </#attempt> 
159 
160                <#-- OBTIENE LAS CATEGORIAS --> 
161                <#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]/> 
162                <#assign categoryList = assetCategoryLocalServiceUtil.getCategories(className , journalArticle.resourcePrimKey) > 
163 
164                <div class="col-xs-12 col-sm-6 col-md-4"> 
165                    <div class="latest-publications-card publications-card publications-category"> 
166                        <div class="latest-publications-header"> 
167                            <div class="header-img"> 
168                                <#if imgUrl != ""> 
169                                    <img loading="lazy" decoding="async" src="${imgUrl}" width="370" height="290" alt="Serie image"> 
170                                <#elseif logoUrl != ""> 
171                                    <img loading="lazy" decoding="async" src="${logoUrl}" width="370" height="290" alt="Serie image"> 
172                                </#if> 
173                            </div> 
174                            <#if audioVideoUrl != ""> 
175                                <div class="header-content"> 
176                                    <div class="actions-cont"> 
177                                        <div class="actions"> 
178                                            <a class="jPlayerPlay" url="${audioVideoUrl}" title="${title}" id="${jaResourcePrimKey}" counter="${reproducciones}"> 
179                                                <i class="play icon-play"></i> 
180                                            </a> 
181                                        </div> 
182                                    </div> 
183                                </div> 
184                            </#if> 
185                        </div> 
186                        <div class="latest-publications-content"> 
187                            <h5 class="title"><a href="${viewURL}">${title}</a></h5> 
188                            <p class="meta"> 
189                                <span class="date"> 
190                                    <#setting locale="es_ES"> 
191                                    ${journalArticle.getDisplayDate()?date?string["d MMMM'.' yyyy"]} 
192                                </span> 
193                            </p> 
194                            <#if resume != ""> 
195                                <div class="content-resume small"> 
196                                    <p>${resume}</p> 
197                                </div> 
198                            </#if> 
199                            <p class="read-more small"> 
200                                <a href="${viewURL}" class="button-detail"> 
201                                    Leer más... <i class="icon-long-arrow-right"></i> 
202                                </a> 
203                            </p> 
204                            <p class="tags"> 
205                                <#list categoryList as category> 
206                                    <a href="${urlBase + '/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=1'}" class="view_category"> 
207                                        <i class="icon-tag"></i> ${category.getName()} 
208                                    </a> 
209                                </#list> 
210                            </p> 
211 
212 
213 
214                        </div> 
215                    </div> 
216                </div> 
217            </#if> 
218        </#if> 
219        <#assign counter = counter + 1> 
220      
221    </#list> 
222 
223<#assign totalPages = (listEntriesSize/delta)?int> 
224 
225<#if listEntriesSize%delta != 0> 
226    <#assign totalPages = totalPages + 1> 
227</#if> 
228 
229     
230</div> 
231<div class="row"> 
232    <div class="col-md-12"> 
233        <div class="pagination-educastur-radio"> 
234            <#list 1..totalPages as index> 
235                <#if index == 1 && index != pageNumber > 
236                    <a class="prev page-numbers" href="${'/web/guest/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=' + (pageNumber - 1) }"> 
237                        <span class="icon-l"> 
238                            <i class="icon-angle-left"></i> 
239                            Anterior 
240                        </span> 
241                    </a> 
242                    <a class="page-numbers current" href="${'/web/guest/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=' + index }"> 
243                        <span class="num">${index}</span> 
244                    </a> 
245                <#elseif index == totalPages && index != pageNumber> 
246                    <a class="page-numbers current" href="${'/web/guest/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=' + index }"> 
247                        <span class="num">${index}</span> 
248                    </a> 
249                    <a class="next page-numbers" href="${'/web/guest/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=' + (pageNumber + 1) }"> 
250                        <span class="icon-r"> 
251                            Siguiente 
252                            <i class="icon-angle-right"></i> 
253                        </span> 
254                    </a> 
255                <#elseif index == pageNumber> 
256                    <span class="page-numbers current"> 
257                        <span class="num">${index}</span> 
258                    </span> 
259                <#elseif index gte (pageNumber - 2) && index lte (pageNumber + 2) > 
260                    <#if index == (pageNumber - 2)> 
261                        <span class="page-numbers dots">...</span> 
262                    </#if> 
263                    <a class="page-numbers current" href="${'/web/guest/publicaciones-categoría?categoryId=' + category.getCategoryId() + '&page=' + index }"> 
264                        <span class="num">${index}</span> 
265                    </a> 
266                    <#if index == (pageNumber + 2)> 
267                        <span class="page-numbers dots">...</span> 
268                    </#if>            
269                </#if> 
270            </#list>             
271        </div> 
272    </div> 
273</div> 
274 
275 
276 
277<#function getField field languageId defaultLanguageId xml> 
278    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]"> 
279    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]"> 
280 
281    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
282    <#local value = selector.selectSingleNode(xml)!> 
283 
284    <#if value?has_content && value.getText()?has_content> 
285        <#return value.getText()> 
286    </#if> 
287 
288    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
289    <#local value = selector.selectSingleNode(xml)!> 
290 
291    <#if value?has_content && value.getText()?has_content> 
292        <#return value.getText()> 
293    </#if> 
294 
295    <#return ""> 
296</#function> 
297 
298<#function parseXml xpath xml> 
299    <#local selector = saxReaderUtil.createXPath(xpath)> 
300    <#local result = selector.selectSingleNode(xml)!> 
301 
302    <#if result?has_content> 
303        <#return result.getStringValue()> 
304    </#if> 
305 
306    <#return ""> 
307</#function> 
308 
309<#function isJson json> 
310    <#local value = json?trim> 
311    <#return value?has_content && value?starts_with("{") && value?ends_with("}")> 
312</#function> 
313 
314<script> 
315    $(".js_title").html("${titleCategory}"); 
316    $(".js_counter_elements").html(${listEntriesSize} + " resultados / página " + ${pageNumber} + " de " + ${totalPages}); 
317    $(".js_img").attr("src","${headerImg}"); 
318</script>