Portal del Ayuntamiento de la ciudad de Valencia - València
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> imagenJSON.groupId [in template "20115#20151#4467918" at line 102, column 81]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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 imagen = "/documents/${imagen... [in template "20115#20151#4467918" at line 102, column 49]
----
1<#assign liferay_theme = PortletJspTagLibs["/META-INF/liferay-theme.tld"] />
2<@liferay_theme["defineObjects"] />
3<#assign themeRootPath = themeDisplay.getPathThemeRoot() />
4<#assign themeImagesPath = themeDisplay.getPathThemeImages() />
5
6<#assign contador = 0 >
7<#assign maxContenidos = 7 >
8
9<div class="container-fluid carousel-container no-cabecera-pt-movil">
10 <div id="myCarouselV1" class="portada-principal carousel slide" data-ride="carousel">
11 <a class="left carousel-control-prev control-flecha" href="#myCarouselV1" data-slide="prev" tabindex="0">
12 <div class="arrow">
13 <span class="vlc-arrow vlc-arrow-left"></span>
14 <span class="sr-only" title="Diapositiva anterior">Diapositiva anterior</span>
15 </div>
16 </a>
17
18 <#assign contador1 = 0 >
19 <#if entries?has_content>
20 <div class="carousel-inner" >
21 <h2 class="ocultovisual"><@liferay.language key="adt-portada-principal-carrusel-noticias-destacadas" /></h2>
22 <#list entries as curEntry>
23 <#assign assetRenderer = curEntry.getAssetRenderer() />
24 <#assign article = assetRenderer.getAssetObject() />
25 <#assign titulo = "" >
26 <#assign descripcion = "" >
27 <#assign urlTitle = article.getUrlTitle() >
28 <#assign url = "/-/${article.getUrlTitle()}" >
29 <#assign urlContext = "">
30 <#assign lang = themeDisplay.getLocale()>
31 <#assign ddmStructureKey = article.getDDMStructureKey() >
32 <#assign rootElement = saxReaderUtil.read(article.getContentByLocale(locale)).getRootElement() />
33
34 <#-- Campanya municipales y Agenda -->
35
36 <#if (ddmStructureKey == "44452") || (ddmStructureKey == "46341")>
37
38 <#-- Campanya municipales -->
39 <#if (ddmStructureKey == "44452")>
40 <#if lang == "es_ES">
41 <#assign urlContext= "/cas/campañas-municipales">
42 <#elseif lang == "ca_ES" >
43 <#assign urlContext= "/val/campanyes-municipals">
44 <#else>
45 <#assign urlContext = "/val/campanyes-municipals">
46 </#if>
47
48 <#assign url = "${urlContext}/-/content/${article.getUrlTitle(locale)}" >
49 </#if>
50
51 <#-- Agenda -->
52 <#if (ddmStructureKey == "46341")>
53 <#if lang == "es_ES">
54 <#assign urlContext= "/cas/agenda-de-la-ciudad">
55 <#elseif lang == "ca_ES" >
56 <#assign urlContext= "/val/agenda-de-la-ciutat">
57 <#else>
58 <#assign urlContext = "/val/agenda-de-la-ciutat">
59 </#if>
60
61 <#assign url = "${urlContext}/-/content/${article.getUrlTitle(locale)}" >
62 </#if>
63
64 <#assign selectorTituloPortada = saxReaderUtil.createXPath("dynamic-element[@name='tituloPortada']") />
65 <#if selectorTituloPortada.selectSingleNode(rootElement)?has_content>
66 <#assign titulo = selectorTituloPortada.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
67 <#if titulo == "">
68 <#assign titulo = article.getTitle(locale) />
69 </#if>
70 <#else>
71 <#assign titulo = article.getTitle(locale) />
72 </#if>
73
74 <#assign selectorSubtituloPortada = saxReaderUtil.createXPath("dynamic-element[@name='subtituloPortada']") />
75 <#if selectorSubtituloPortada.selectSingleNode(rootElement)?has_content>
76 <#assign descripcion = selectorSubtituloPortada.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
77 <#if descripcion == "">
78 <#assign descripcion = article.getDescription(locale) />
79 </#if>
80 <#else>
81 <#assign descripcion = article.getDescription(locale) />
82 </#if>
83 <#assign selectorImagenPortada = saxReaderUtil.createXPath("dynamic-element[@name='imagenPortada']") />
84 <#if selectorImagenPortada.selectSingleNode(rootElement)?has_content>
85 <#assign imagen = selectorImagenPortada.selectSingleNode(rootElement).getStringValue()?trim/>
86
87 <#if imagen == "">
88 <#assign selectorImagenCA = saxReaderUtil.createXPath("dynamic-element[@name='imagen']") />
89 <#if selectorImagenCA.selectSingleNode(rootElement)?has_content>
90 <#assign imagen = selectorImagenCA.selectSingleNode(rootElement).getStringValue()?trim/>
91 <#if imagen == "">
92 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
93 <#else>
94 <#assign imagenJSON = imagen?eval >
95 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
96 </#if>
97 <#else>
98 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
99 </#if>
100 <#else>
101 <#assign imagenJSON = imagen?eval >
102 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
103 </#if>
104 <#else>
105 <#assign selectorImagenCA = saxReaderUtil.createXPath("dynamic-element[@name='imagen']") />
106
107 <#if selectorImagenCA.selectSingleNode(rootElement)?has_content>
108 <#assign imagen = selectorImagenCA.selectSingleNode(rootElement).getStringValue()?trim/>
109 <#if imagen == "">
110 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
111 <#else>
112 <#assign imagenJSON = imagen?eval >
113 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
114 </#if>
115 <#else>
116 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
117 </#if>
118 </#if>
119
120 <#-- Noticia actualidad -->
121
122 <#elseif ddmStructureKey == "156671">
123
124 <#if lang == "es_ES">
125 <#assign urlContext= "/cas/actualidad">
126 <#elseif lang == "ca_ES" >
127 <#assign urlContext= "/val/actualitat">
128 <#else>
129 <#assign urlContext = "/val/actualitat">
130 </#if>
131
132 <#assign url = "${urlContext}/-/content/${article.getUrlTitle(locale)}" >
133
134 <#assign selectorTituloPortada = saxReaderUtil.createXPath("dynamic-element[@name='tituloPortada']") />
135 <#if selectorTituloPortada.selectSingleNode(rootElement)?has_content>
136 <#assign titulo = selectorTituloPortada.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
137 <#if titulo == "">
138 <#assign titulo = article.getTitle(locale) />
139 </#if>
140 <#else>
141 <#assign titulo = article.getTitle(locale) />
142 </#if>
143
144 <#assign selectorSubtituloPortada = saxReaderUtil.createXPath("dynamic-element[@name='subtituloPortada']") />
145 <#if selectorSubtituloPortada.selectSingleNode(rootElement)?has_content>
146 <#assign descripcion = selectorSubtituloPortada.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
147 <#if descripcion == "">
148 <#assign selectorTitular = saxReaderUtil.createXPath("dynamic-element[@name='Antetitulo']") />
149 <#if selectorTitular.selectSingleNode(rootElement)?has_content>
150 <#assign descripcion = selectorTitular.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
151 </#if>
152 </#if>
153 <#else>
154 <#assign selectorTitular = saxReaderUtil.createXPath("dynamic-element[@name='Antetitulo']") />
155 <#if selectorTitular.selectSingleNode(rootElement)?has_content>
156 <#assign descripcion = selectorTitular.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
157 </#if>
158 </#if>
159 <#assign selectorImagenPortada = saxReaderUtil.createXPath("dynamic-element[@name='imagenPortada']") />
160 <#if selectorImagenPortada.selectSingleNode(rootElement)?has_content>
161 <#assign imagen = selectorImagenPortada.selectSingleNode(rootElement).getStringValue()?trim />
162
163 <#if imagen == "">
164 <#assign selectorTipo = saxReaderUtil.createXPath("dynamic-element[@name='tituloRecurso']/dynamic-element[@name='tipoRecurso']") />
165 <#assign selectorMult = saxReaderUtil.createXPath("dynamic-element[@name='tituloRecurso']/dynamic-element[@name='multimedia']") />
166 <#if selectorTipo.selectSingleNode(rootElement)?has_content>
167 <#assign tipo = selectorTipo.selectSingleNode(rootElement).getStringValue()?replace("\"", "") />
168 </#if>
169 <#if (tipo?? && tipo?trim == "imagen") && selectorMult.selectSingleNode(rootElement)?has_content>
170 <#assign imagen = selectorMult.selectSingleNode(rootElement).getStringValue()?trim />
171 <#if imagen == "">
172 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
173 <#else>
174 <#assign imagenJSON = imagen?eval >
175 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.classPK}/${imagenJSON.title?url('UTF-8')}/${imagenJSON.uuid}" >
176 </#if>
177
178 <#else>
179 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
180 </#if>
181 <#else>
182 <#assign imagenJSON = imagen?eval >
183 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
184 </#if>
185 <#else>
186 <#assign selectorTipo = saxReaderUtil.createXPath("dynamic-element[@name='tituloRecurso']/dynamic-element[@name='tipoRecurso']") />
187 <#assign selectorMult = saxReaderUtil.createXPath("dynamic-element[@name='tituloRecurso']/dynamic-element[@name='multimedia']") />
188 <#if selectorTipo.selectSingleNode(rootElement)?has_content>
189 <#assign tipo = selectorTipo.selectSingleNode(rootElement).getStringValue()?replace("\"", "") />
190 </#if>
191 <#if (tipo?? && tipo?trim == "imagen") && selectorMult.selectSingleNode(rootElement)?has_content>
192 <#assign imagen = selectorMult.selectSingleNode(rootElement).getStringValue()?trim />
193 }/${imagenJSON.name}/${imagenJSON.uuid}" >
194 <#if imagen == "">
195 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
196 <#else>
197 <#assign imagenJSON = imagen?eval >
198 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
199 </#if>
200
201 <#else>
202 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
203 </#if>
204 </#if>
205
206 <#-- destacadas carrousel -->
207
208 <#elseif ddmStructureKey == "9465501">
209
210 <#assign selectorTituloPortada = saxReaderUtil.createXPath("dynamic-element[@name='titulo']") />
211 <#if selectorTituloPortada.selectSingleNode(rootElement)?has_content>
212 <#assign titulo = selectorTituloPortada.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
213 <#if titulo == "">
214 <#assign titulo = article.getTitle(locale) />
215 </#if>
216 <#else>
217 <#assign titulo = article.getTitle(locale) />
218 </#if>
219
220 <#assign selectorUrl = saxReaderUtil.createXPath("dynamic-element[@name='url']") />
221 <#if selectorUrl.selectSingleNode(rootElement)?has_content>
222 <#assign url = selectorUrl.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
223 <#if url == "">
224 <#assign url = "/-/${article.getUrlTitle()}" >
225 </#if>
226
227 </#if>
228
229
230 <#assign selectorSubtituloPortada = saxReaderUtil.createXPath("dynamic-element[@name='descripcion']") />
231 <#if selectorSubtituloPortada.selectSingleNode(rootElement)?has_content>
232 <#assign descripcion = selectorSubtituloPortada.selectSingleNode(rootElement).getStringValue()?replace("\"", "")?trim />
233 <#if descripcion == "">
234 <#assign descripcion = article.getDescription(locale) />
235 </#if>
236 <#else>
237 <#assign descripcion = article.getDescription(locale) />
238 </#if>
239
240 <#assign selectorImagenPortada = saxReaderUtil.createXPath("dynamic-element[@name='imagen']") />
241 <#if selectorImagenPortada.selectSingleNode(rootElement)?has_content>
242 <#assign imagen = selectorImagenPortada.selectSingleNode(rootElement).getStringValue()?trim/>
243
244 <#if imagen == "">
245 <#assign selectorImagenCA = saxReaderUtil.createXPath("dynamic-element[@name='imagen']") />
246 <#if selectorImagenCA.selectSingleNode(rootElement)?has_content>
247 <#assign imagen = selectorImagenCA.selectSingleNode(rootElement).getStringValue()?trim/>
248 <#if imagen == "">
249 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
250 <#else>
251 <#assign imagenJSON = imagen?eval >
252 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
253 </#if>
254 <#else>
255 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
256 </#if>
257 <#else>
258 <#assign imagenJSON = imagen?eval >
259 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
260 </#if>
261 <#else>
262 <#assign selectorImagenCA = saxReaderUtil.createXPath("dynamic-element[@name='imagen']") />
263
264 <#if selectorImagenCA.selectSingleNode(rootElement)?has_content>
265 <#assign imagen = selectorImagenCA.selectSingleNode(rootElement).getStringValue()?trim/>
266 <#if imagen == "">
267 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
268 <#else>
269 <#assign imagenJSON = imagen?eval >
270 <#assign imagen = "/documents/${imagenJSON.groupId}/${imagenJSON.fileEntryId}/${imagenJSON.name?url('UTF-8')}/${imagenJSON.uuid}" >
271 </#if>
272 <#else>
273 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
274 </#if>
275 </#if>
276
277
278 <#else>
279 <#assign titulo = article.getTitle(locale) />
280 <#assign descripcion = article.getDescription(locale) />
281 <#assign imagen = "${themeImagesPath}/imagen_no_disponible.jpg" />
282 </#if>
283
284 <div class="carousel-item ${(contador1 == 0)?then('active', '')} background-image-publicador" style="background-image: url(${imagen})">
285 <div class="container">
286 <div class="row row-elementosV1">
287 <div class="col-xs-12">
288 <div class=" row row-title ">
289 <h3 class="text-titleV1" style="width: 100%;">${titulo?trim}</h3>
290 <hr class="hr-title"/>
291 </div>
292
293 <div class="row row-description ">
294 <p class="text-descriptionV1 ">${descripcion?trim}</p>
295 </div>
296 <div class="row url-informationV1 ">
297 <p>
298 <a class="btn btn-estandar " href="${url} " target="_blank">
299 <@liferay.language key="label_mas_informacion" />
300 </a>
301 </p>
302 </div>
303 </div>
304 </div>
305 </div>
306 </div>
307
308 <#assign contador1 = contador1+1 >
309 <#if contador1 == maxContenidos >
310 <#break>
311 </#if>
312 </#list>
313 </div>
314 <a class="right carousel-control-next control-flecha flecha" href="#myCarouselV1" data-slide="next" tabindex="0">
315 <div class="arrow">
316 <span class="vlc-arrow vlc-arrow-right"></span>
317 <span class="sr-only" title="Diapositiva siguiente">Diapositiva siguiente</span>
318 </div>
319 </a>
320 <div class="slider-dots-wrapper">
321 <span class="btn-play glyphicon"></span>
322 <ul class="carousel-indicators">
323 <#if entries?has_content>
324 <#list entries as curEntry>
325 <li data-target="#myCarouselV1" data-slide-to="${contador}" class="${(contador == 0)?then('active', '')}" >
326 <button ${(contador == 0)?then('aria-current=\"true\"', '')} class="${(contador == 0)?then('current', '')}" ><span class="ocultovisual">Mostrar Noticia ${contador+1} </span></button>
327 </li>
328 <#assign contador = contador+1 >
329 <#if contador == maxContenidos >
330 <#break>
331 </#if>
332 </#list>
333 </#if>
334 </ul>
335 </div>
336
337 </#if>
338 </div>
339</div>
340
341<#if !entries?has_content>
342 <style>
343 .container-fluid.carousel-container {
344 display: none;
345 }
346 #webs-municipales-circ {
347 margin-top: 3em;
348 }
349 </style>
350
351</#if>
352
353<script>
354 $('#myCarouselV1').carousel({
355 interval:6000,
356 pause: "false"
357 });
358
359 $('#myCarouselV1 .btn-play').on('click', function () {
360 if ($('.btn-play').hasClass('btn-play-paused') ) {
361 $('#myCarouselV1').carousel('cycle');
362 } else {
363 $('#myCarouselV1').carousel('pause');
364 }
365 $('.btn-play').toggleClass('btn-play-paused');
366 });
367
368</script>
ACTUALIDAD
A un clic
Diapositiva anterior
Diapositiva siguiente
A TU LADO
Premios para la igualdad 2026
12/03/2026
Agenda de la ciudad
Jueves
19
Marzo
REDES SOCIALES
GEOPORTAL
Nodo: sweb742:8080:

