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#8042977" 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#8042977" 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 readCompleteNew = languageUtil.get(locale, "read-complete-new")/> 
14 
15<#assign UrlNoticia = "detalle-noticia" /> 
16<#assign visorId = "56_INSTANCE_0iQqs56i5XFY" /> 
17<#assign groupId = themeDisplay.getScopeGroupId() /> 
18				 
19<#if listVoc?has_content> 
20        <#list listVoc as voc> 
21            <#if voc.name == "Noticias"> 
22	            <#assign vocId = voc.vocabularyId /> 
23	        </#if> 
24        </#list> 
25    </#if> 
26 
27<#macro noticeUp> 
28	<div class="contenidoPrincipal"> 
29		<div style="display: table-row"> 
30			<#if ImgPrincipal?has_content> 
31				<div class="imagenNot"> 
32					<img class="img" alt="Imagen" src="${ImgPrincipal}" /> 
33				</div> 
34			</#if> 
35			<div class="contText"> 
36				<div class="titNoticia"> 
37					${TituloPrincipal} 
38				</div> 
39				<#if (FechaNoticia_Data > 0)> 
40					<#assign FechaNoticia_DateObj = dateUtil.newDate(FechaNoticia_Data)> 
41					<div class="fechaTipo"> 
42						<span class="tipo">${dateUtil.getDate(FechaNoticia_DateObj, "dd MMM yyyy", locale)}</span> 
43						<#if categories?has_content> 
44							<#list categories as cat> 
45								<#if cat.getVocabularyId() ==vocId>	 
46									<span class="tipo"> - ${cat.name}</span> 
47								</#if>		 
48							</#list> 
49						</#if> 
50					</div> 
51				</#if> 
52				<div class="limited-description-box"> 
53					<div class="descripcion limited-description-red"> 
54						${DescGenerica} 
55					</div> 
56				</div> 
57				<div class="cont-btnCnt"> 
58					<#assign url = "${contexto}"+UrlNoticia+"/-/journal_content/"+visorId+"/${groupId}/${articleId}?" /> 
59					<a href="${url}"><button class="btn btn-primary" type="button">${languageUtil.get(locale, "com.cofares.liferay.template.saber.mas")}<i class="icon-chevron-right"></i></button></a> 
60				</div> 
61			</div> 
62		</div>	 
63	</div> 
64</#macro>	 
65 
66	 
67<#macro noticeDown> 
68		<ul class="listNot"> 
69			<li class="item"> 
70				<#if ImgPrincipal?has_content> 
71					<div class="imagenNot"> 
72						<figure class="contImg"> 
73							<img class="img" alt="Imagen" src="${ImgPrincipal}" /> 
74						</figure> 
75					</div> 
76				</#if> 
77				<div class="contText"> 
78					<div class="titNoticia"> 
79						${TituloPrincipal} 
80					</div> 
81					<#if (FechaNoticia_Data > 0)> 
82						<#assign FechaNoticia_DateObj = dateUtil.newDate(FechaNoticia_Data)> 
83						<div class="fechaTipo"> 
84							<span class="tipo">${dateUtil.getDate(FechaNoticia_DateObj, "dd MMM yyyy", locale)}</span> 
85							<#if categories?has_content> 
86								<#list categories as cat> 
87									<#if cat.getVocabularyId() ==vocId>	 
88										<span class="tipo"> - ${cat.name}</span> 
89									</#if>		 
90								</#list> 
91							</#if> 
92						</div> 
93					</#if> 
94					<div class="enlaceNoticia"> 
95						<#assign url = "${contexto}"+UrlNoticia+"/-/journal_content/"+visorId+"/${groupId}/${articleId}?" /> 
96						<a href="${url}">${readCompleteNew} <i class="icon-chevron-right"></i></a> 
97					</div> 
98				</div> 
99			</li> 
100		</ul> 
101</#macro>	 
102	 
103<#if entries?has_content> 
104	<div class="contenido intrudeTop"> 
105        <#if entries?size == 3> 
106		    <#assign count = 1 /> 
107        <#else> 
108		    <#assign count = 0 /> 
109        </#if> 
110		<#list entries as curEntry> 
111			<#assign article = curEntry.getAssetRenderer().getArticle() /> 
112			<#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContentByLocale(locale)) /> 
113			<!--Obtenemos los campos de la estructura--> 
114			<#assign TituloPrincipal = docXml.valueOf("//dynamic-element[@name='TituloPrincipal']/dynamic-content/text()") /> 
115			<#assign TituloSecundario = docXml.valueOf("//dynamic-element[@name='TituloSecundario']/dynamic-content/text()") /> 
116			<#assign FechaNot = docXml.valueOf("//dynamic-element[@name='FechaNoticia']/dynamic-content/text()") /> 
117			<#assign FechaNoticia_Data = getterUtil.getLong(FechaNot)> 
118			<#assign Tag = assetTagLocalService.getTagNames(curEntry.getAssetRenderer().getClassName(), article.getResourcePrimKey())/> 
119			<#assign categories = assetCategoryLocalService.getCategories(curEntry.getAssetRenderer().getClassName(), article.getResourcePrimKey())/> 
120			<#assign DescGenerica = docXml.valueOf("//dynamic-element[@name='Subtitulo']/dynamic-content/text()") /> 
121			<#assign ImgPrincipal = docXml.valueOf("//dynamic-element[@name='ImgPrincipal']/dynamic-content/text()") /> 
122			<#assign ImgSecun = docXml.valueOf("//dynamic-element[@name='ImgSecun']/dynamic-content/text()") /> 
123			<#assign articleId = article.getArticleId() /> 
124			<!--Buscamos si el contexto es público o privado--> 
125			<#if themeDisplay.getLayout().isPrivateLayout()> 
126				<#assign contexto = "/group/canal-online/"/> 
127			<#else> 
128				<#assign contexto = "/web/canal-online/"/> 
129			</#if> 
130			<#assign count = count + 1 /> 
131			<#if count == 1> 
132				<@noticeUp/> 
133			<#elseif count == 2> 
134			<div class="content-middle"> 
135				<div class="contenidoSecundario left"> 
136					<@noticeDown/> 
137				</div> 
138			<#elseif count == 3> 
139				<div class="contenidoSecundario center"> 
140					<@noticeDown/> 
141				</div> 
142			<#elseif count == 4> 
143				<div class="contenidoSecundario right"> 
144					<@noticeDown/> 
145				</div> 
146			</#if> 
147		</#list> 
148		</div> 
149	</div> 
150</#if> 

newsmvc