Publicador de contenidos

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> serviceLocator.findService("com.liferay.portlet.asset.service.AssetCategoryLocalService")  [in template "20155#20195#8270688" at line 7, column 38]

----
Tip: If the failing expression is known to be 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 assetCategoryLocalService = s...  [in template "20155#20195#8270688" at line 7, column 1]
----
1<script> 
2  $( function() { 
3    $( "#tabs" ).tabs(); 
4  } ); 
5  </script> 
6 
7<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetCategoryLocalService")> 
8<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetVocabularyLocalService")> 
9<#assign assetTagLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetTagLocalService")> 
10<#assign listVoc = assetVocabularyLocalService.getGroupVocabularies(themeDisplay.getSiteGroupId())> 
11 
12<!--Multiidioma--> 
13<#assign knowMore = languageUtil.get(locale, "know-more")/> 
14<#assign moreInformation = languageUtil.get(locale, "more-information")/> 
15 
16<#assign visorId = "56_INSTANCE_0gwL1icRxpTH" /> 
17<#if themeDisplay.getLayout().isPrivateLayout()> 
18	<#assign contexto = "/group/canal-online/"/> 
19<#else> 
20	<#assign contexto = "/web/canal-online/"/> 
21</#if> 
22 
23<#if listVoc?has_content> 
24        <#list listVoc as voc> 
25            <#if voc.name == "Eventos"> 
26	            <#assign vocId = voc.vocabularyId /> 
27	        </#if> 
28        </#list> 
29    </#if> 
30 
31<#macro eventUp> 
32	<div class="contenidoPrincipal"> 
33		<div style="display: table-row"> 
34			<#if ImgPrincipal?has_content> 
35				<div class="imagenNot"> 
36						<img class="img" alt="Imagen" src="${ImgPrincipal}" /> 
37				</div> 
38			</#if> 
39			<div class="contText"> 
40				<div class="titNoticia"> 
41					${TituloPrincipal} 
42				</div> 
43				<#if (FechaEvento_Data > 0)> 
44					<#assign FechaEvento_DateObj = dateUtil.newDate(FechaEvento_Data)> 
45					<div class="fechaTipo"> 
46						<span class="fecha">${dateUtil.getDate(FechaEvento_DateObj, "dd MMM yyyy", locale)}</span> 
47						<#if categories?has_content> 
48							<#list categories as cat> 
49								<#if cat.getVocabularyId() ==vocId>	 
50									<span class="tipo">${cat.name?upper_case}</span> 
51									<span class="lugar"> | ${LocalidadEvento}</span> 
52								</#if>		 
53							</#list> 
54						</#if> 
55					</div> 
56				</#if> 
57				<div class="limited-description-box"> 
58					<div class="descripcion limited-description-red"> 
59						${DescGenerica} 
60					</div> 
61				</div> 
62				<div class="cont-btnCnt"> 
63					<#assign url = "${contexto}"+"detalle-evento/-/journal_content/"+visorId+"/${groupId}/${articleId}?" /> 
64					<a href="${url}"> 
65						<button class="btn btn-primary" type="button">${knowMore}</button> 
66					</a> 
67				</div> 
68			</div>	 
69		</div> 
70    </div> 
71</#macro>	 
72 
73 
74<#macro eventDown> 
75	<ul class="listNot"> 
76		<li class="item"> 
77            <#if ImgPrincipal?has_content> 
78				<div class="imagenNot"> 
79					<figure class="contImg"> 
80						<img class="img" alt="Imagen" src="${ImgPrincipal}" /> 
81					</figure> 
82				</div> 
83			</#if> 
84            <div class="contText"> 
85                <div class="titNoticia"> 
86					${TituloPrincipal} 
87				</div> 
88				<#if (FechaEvento_Data > 0)> 
89					<#assign FechaEvento_DateObj = dateUtil.newDate(FechaEvento_Data)> 
90					<div class="fechaTipo"> 
91						<span class="lugar">${dateUtil.getDate(FechaEvento_DateObj, "dd MMM yyyy", locale)} </span> 
92						<#if categories?has_content> 
93							<#list categories as cat> 
94								<#if cat.getVocabularyId() ==vocId>	 
95									<span class="lugar"> | ${cat.name?upper_case}</span> 
96								</#if>		 
97							</#list> 
98						</#if> 
99					</div> 
100					<div class="fechaTipo"><span class="lugar">${LocalidadEvento}</span></div> 
101				</#if> 
102				<div class="enlaceNoticia"> 
103					<#assign url = "${contexto}"+"detalle-evento/-/journal_content/"+visorId+"/${groupId}/${articleId}?" /> 
104					<a href="${url}">${moreInformation} <i class="icon-chevron-right"></i></a> 
105				</div> 
106			</div> 
107		</li> 
108	</ul> 
109</#macro>	 
110 
111 
112 
113 
114<#if entries?has_content> 
115	<#assign tipo = "" /> 
116	<div class="contenido intrudeTop"> 
117		<#assign contNotDest = 0> 
118		<#assign idArticulo = "" /> 
119        <#if entries?size == 3> 
120		    <#assign count = 1 /> 
121        <#else> 
122		    <#assign count = 0 /> 
123        </#if> 
124		<#list entries as curEntry> 
125			<#assign article = curEntry.getAssetRenderer().getArticle() /> 
126			<#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContentByLocale(locale)) /> 
127			 
128			<#assign TituloPrincipal = docXml.valueOf("//dynamic-element[@name='TituloPrincipal']/dynamic-content/text()") /> 
129			<#assign FechaEvent = docXml.valueOf("//dynamic-element[@name='FechaEvento']/dynamic-content/text()") /> 
130			<#assign FechaEvento_Data = getterUtil.getLong(FechaEvent)> 
131			<#assign Tag = assetTagLocalService.getTagNames(curEntry.getAssetRenderer().getClassName(), article.getResourcePrimKey())/> 
132			<#assign categories = assetCategoryLocalService.getCategories(curEntry.getAssetRenderer().getClassName(), article.getResourcePrimKey())/> 
133			<#assign DescGenerica = docXml.valueOf("//dynamic-element[@name='DescripcionEvento']/dynamic-content/text()") /> 
134			<#assign ImgPrincipal = docXml.valueOf("//dynamic-element[@name='ImagenDestacado']/dynamic-content/text()") /> 
135			<#assign DireccionEvento = docXml.valueOf("//dynamic-element[@name='DireccionEvento']/dynamic-content/text()") /> 
136			<#assign LocalidadEvento = docXml.valueOf("//dynamic-element[@name='LocalidadEvento']/dynamic-content/text()") /> 
137			<#assign groupId = themeDisplay.getScopeGroupId() /> 
138			<#assign articleId = article.getArticleId() /> 
139    				<#assign idArticulo = article.getArticleId() /> 
140			<#assign count = count + 1 /> 
141			<#if count == 1> 
142				<@eventUp/> 
143			<#elseif count == 2> 
144				<div class="content-middle"> 
145					<div class="contenidoSecundario left"> 
146						<@eventDown/> 
147					</div> 
148			<#elseif count == 3> 
149				<div class="contenidoSecundario center"> 
150					<@eventDown/> 
151				</div> 
152			<#elseif count == 4> 
153				<div class="contenidoSecundario right"> 
154					<@eventDown/> 
155				</div> 
156			</#if> 
157    		</#list> 
158		</div> 
159	</div> 
160</#if> 

newsmvc