An error occurred while processing the template.
The following has evaluated to null or missing:
==> structureService.getStructureAttrattoreKey() [in template "20099#20135#154466" at line 9, column 39]
----
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 attrattoreStructureKey = stru... [in template "20099#20135#154466" at line 9, column 5]
---- 1<#-- MOSAICO MULTITIPO 04/07/2023--> 2 3<#assign showTemplate = false /> 4<#assign emptyEntries = false /> 5 6<#if entries?has_content> 7 <#assign showTemplate = true /> 8 <#assign structureService = serviceLocator.findService("it.inera.palermo.structure.service.StructureService")> 9 <#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 10 <#assign eventoStructureKey = structureService.getStructureEventoKey()> 11 <#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 12 <#assign ricettaStructureKey = structureService.getStructureRicettaKey()> 13 <#assign luogoStructureKey = structureService.getStructureLuogoKey()> 14 <#assign layout = themeDisplay.getLayout()/> 15 <#assign currentSite = themeDisplay.getSiteGroup()/> 16 <#assign currentSiteUrl = currentSite.getPathFriendlyURL(false, themeDisplay)/> 17 <#assign currentSiteFriendlyUrl = currentSite.getFriendlyURL()/> 18 19 <#assign count = 1/> 20 <#list entries as curEntry> 21 <#assign assetRenderer = curEntry.getAssetRenderer()/> 22 <#if validator.isNotNull(assetRenderer)> 23 <#assign className = assetRenderer.getClassName() /> 24 <#if className == "com.liferay.journal.model.JournalArticle"> 25 <#assign ja = assetRenderer.getArticle() /> 26 <#assign structureId = ja.getStructureId() /> 27 28 <#if showTemplate && structureId != attrattoreStructureKey && structureId != eventoStructureKey 29 && structureId != itinerarioStructureKey && structureId != ricettaStructureKey 30 && structureId != luogoStructureKey > 31 <#assign showTemplate = false /> 32 </#if> 33 <#else> 34 <#assign showTemplate = false /> 35 </#if> 36 <#else> 37 <#assign showTemplate = false /> 38 </#if> 39 </#list> 40<#else> 41 <#assign emptyEntries = true /> 42</#if> 43 44<#if !emptyEntries> 45 <#if showTemplate> 46 <div class="container"> 47 <div class="row cards-wrapper"> 48 <#list entries as curEntry> 49 <#assign assetRenderer = curEntry.getAssetRenderer()/> 50 <#assign ja = assetRenderer.getArticle() /> 51 <#assign structureId = ja.getStructureId() /> 52 <#assign langId = themeDisplay.getLanguageId() /> 53 <#assign contentByLocale = ja.getContentByLocale(themeDisplay.getLanguageId()) /> 54 <#assign colorebordo = "border-bottom-yellow"> 55 <#assign subpage = "luogo"> 56 57 <#if structureId == attrattoreStructureKey> 58 <#assign subpage = "attrazione"> 59 <#elseif structureId == eventoStructureKey> 60 <#assign subpage = "evento"> 61 <#elseif structureId == itinerarioStructureKey> 62 <#assign subpage = "itinerario"> 63 <#elseif structureId == ricettaStructureKey> 64 <#assign subpage = "ricetta"> 65 <#elseif structureId == luogoStructureKey> 66 <#assign subpage = "luogo"> 67 <#else> 68 </#if> 69 70 <#--CONTENT BY DEFAULT LOCALE--> 71 <#assign url = "" > 72 <#attempt> 73 <#assign contentByDefaultLocale = ja.getContentByLocale(localeUtil.getDefault()) /> 74 <#assign documentByDefaultLocale = saxReaderUtil.read(contentByDefaultLocale) > 75 <#assign rootElementByDefaultLocale = documentByDefaultLocale.getRootElement()> 76 77 <#assign xPathImmagineListaByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 78 <#if xPathImmagineListaByDefaultLocale?? && xPathImmagineListaByDefaultLocale?has_content> 79 <#if xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?? && xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?has_content> 80 <#assign immagineListaByDefaultLocale = xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 81 </#if> 82 </#if> 83 <#assign xPathImmagineBannerByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 84 85 <#assign immagineBannerByDefaultLocale = xPathImmagineBannerByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 86 87 <#if immagineListaByDefaultLocale?trim?has_content> 88 <#assign immagineByDefaultLocale = immagineListaByDefaultLocale> 89 <#else> 90 <#assign immagineByDefaultLocale = immagineBannerByDefaultLocale> 91 </#if> 92 93 <#if validator.isNotNull(immagineByDefaultLocale)> 94 <#attempt> 95 <#assign imgJsonByDefaultLocale = jsonFactoryUtil.createJSONObject(immagineByDefaultLocale)> 96 <#assign url = "/documents/"+ imgJsonByDefaultLocale.groupId +"/" +imgJsonByDefaultLocale.classPK +"/"+ imgJsonByDefaultLocale.title +"/"+imgJsonByDefaultLocale.uuid + "?width=600" > 97 <#recover> 98 <#assign url = ""> 99 </#attempt> 100 </#if> 101 <#recover> 102 </#attempt> 103 <#--CONTENT BY DEFAULT LOCALE--> 104 105 <#assign urlTitle = ja.getUrlTitle() /> 106 <#assign document = saxReaderUtil.read(contentByLocale) > 107 <#assign rootElement = document.getRootElement()> 108 <#assign xPathTitolo = "" /> 109 <#assign xPathSottotitolo_abstract = "" /> 110 <#assign xPathImmagineBanner = "" /> 111 <#assign xPathTextAltImg = "" /> 112 <#assign textAltImg = "" /> 113 <#assign destinationPage = "" /> 114 <#assign immagineLista = ""> 115 <#assign textAltImgLista = ""> 116 <#assign immagine = ""> 117 <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 118 <#assign xPathSottotitolo_abstract = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 119 120 <#assign xPathImmagineLista = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 121 <#if xPathImmagineLista?? && xPathImmagineLista?has_content> 122 <#if xPathImmagineLista.selectSingleNode(rootElement)?? && xPathImmagineLista.selectSingleNode(rootElement)?has_content> 123 <#assign immagineLista = xPathImmagineLista.selectSingleNode(rootElement).getStringValue()> 124 </#if> 125 </#if> 126 <#assign xPathTextAltImgLista = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_lista']")> 127 <#if xPathTextAltImgLista?? && xPathTextAltImgLista?has_content> 128 <#if xPathTextAltImgLista.selectSingleNode(rootElement)?? && xPathTextAltImgLista.selectSingleNode(rootElement)?has_content> 129 <#assign textAltImgLista = xPathTextAltImgLista.selectSingleNode(rootElement).getStringValue()> 130 </#if> 131 </#if> 132 133 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 134 <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_banner']")> 135 <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 136 <#assign destinationPage = "${currentSiteUrl}${currentSiteFriendlyUrl}/search/-/search/${subpage}/${urlTitle}" /> 137 <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 138 <#assign sottotitolo_abstract = xPathSottotitolo_abstract.selectSingleNode(rootElement).getStringValue()> 139 140 <#assign immagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 141 <#if !textAltImg?has_content> 142 <#assign textAltImg = titolo> 143 </#if> 144 145 <#if immagineLista?trim?has_content> 146 <#assign immagine = immagineLista> 147 <#assign textAltImg = textAltImgLista> 148 <#else> 149 <#assign immagine = immagineBanner> 150 </#if> 151 152 <#if validator.isNotNull(immagine)> 153 <#attempt> 154 <#assign imgJson = jsonFactoryUtil.createJSONObject(immagine)> 155 <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 156 <#recover> 157 </#attempt> 158 </#if> 159 <div class="card-container col-12 col-md-6 col-lg-4 ${colorebordo}"> 160 <div class="row"> 161 <div class="card"> 162 <a href="${destinationPage}"> 163 <img class="card-img-top" src="${url}" alt="${textAltImg}"> 164 <div class="card-body"> 165 <h3 class="card-title">${titolo}</h3> 166 <p class="card-text">${sottotitolo_abstract}</p> 167 </div> 168 </a> 169 </div> 170 </div> 171 </div> 172 </#list> 173 </div> 174 </div> 175 <#else> 176 <div style="border: 1px solid red; padding:20px;"> 177 <h3 style="color: red;">Questo template supporta solo contenuti di tipo Web Content con struttura attrattori, eventi, itinerari, ricette, luoghi.</h3> 178 <h3 style="color: red;">Configurare opportunamente l'aggregatore risorse</h3> 179 </div> 180 </#if> 181</#if> Event archive
An error occurred while processing the template.
The following has evaluated to null or missing:
==> structureService.getStructureAttrattoreKey() [in template "20099#20135#154466" at line 9, column 39]
----
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 attrattoreStructureKey = stru... [in template "20099#20135#154466" at line 9, column 5]
---- 1<#-- MOSAICO MULTITIPO 04/07/2023--> 2 3<#assign showTemplate = false /> 4<#assign emptyEntries = false /> 5 6<#if entries?has_content> 7 <#assign showTemplate = true /> 8 <#assign structureService = serviceLocator.findService("it.inera.palermo.structure.service.StructureService")> 9 <#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()> 10 <#assign eventoStructureKey = structureService.getStructureEventoKey()> 11 <#assign itinerarioStructureKey = structureService.getStructureItinerarioKey()> 12 <#assign ricettaStructureKey = structureService.getStructureRicettaKey()> 13 <#assign luogoStructureKey = structureService.getStructureLuogoKey()> 14 <#assign layout = themeDisplay.getLayout()/> 15 <#assign currentSite = themeDisplay.getSiteGroup()/> 16 <#assign currentSiteUrl = currentSite.getPathFriendlyURL(false, themeDisplay)/> 17 <#assign currentSiteFriendlyUrl = currentSite.getFriendlyURL()/> 18 19 <#assign count = 1/> 20 <#list entries as curEntry> 21 <#assign assetRenderer = curEntry.getAssetRenderer()/> 22 <#if validator.isNotNull(assetRenderer)> 23 <#assign className = assetRenderer.getClassName() /> 24 <#if className == "com.liferay.journal.model.JournalArticle"> 25 <#assign ja = assetRenderer.getArticle() /> 26 <#assign structureId = ja.getStructureId() /> 27 28 <#if showTemplate && structureId != attrattoreStructureKey && structureId != eventoStructureKey 29 && structureId != itinerarioStructureKey && structureId != ricettaStructureKey 30 && structureId != luogoStructureKey > 31 <#assign showTemplate = false /> 32 </#if> 33 <#else> 34 <#assign showTemplate = false /> 35 </#if> 36 <#else> 37 <#assign showTemplate = false /> 38 </#if> 39 </#list> 40<#else> 41 <#assign emptyEntries = true /> 42</#if> 43 44<#if !emptyEntries> 45 <#if showTemplate> 46 <div class="container"> 47 <div class="row cards-wrapper"> 48 <#list entries as curEntry> 49 <#assign assetRenderer = curEntry.getAssetRenderer()/> 50 <#assign ja = assetRenderer.getArticle() /> 51 <#assign structureId = ja.getStructureId() /> 52 <#assign langId = themeDisplay.getLanguageId() /> 53 <#assign contentByLocale = ja.getContentByLocale(themeDisplay.getLanguageId()) /> 54 <#assign colorebordo = "border-bottom-yellow"> 55 <#assign subpage = "luogo"> 56 57 <#if structureId == attrattoreStructureKey> 58 <#assign subpage = "attrazione"> 59 <#elseif structureId == eventoStructureKey> 60 <#assign subpage = "evento"> 61 <#elseif structureId == itinerarioStructureKey> 62 <#assign subpage = "itinerario"> 63 <#elseif structureId == ricettaStructureKey> 64 <#assign subpage = "ricetta"> 65 <#elseif structureId == luogoStructureKey> 66 <#assign subpage = "luogo"> 67 <#else> 68 </#if> 69 70 <#--CONTENT BY DEFAULT LOCALE--> 71 <#assign url = "" > 72 <#attempt> 73 <#assign contentByDefaultLocale = ja.getContentByLocale(localeUtil.getDefault()) /> 74 <#assign documentByDefaultLocale = saxReaderUtil.read(contentByDefaultLocale) > 75 <#assign rootElementByDefaultLocale = documentByDefaultLocale.getRootElement()> 76 77 <#assign xPathImmagineListaByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 78 <#if xPathImmagineListaByDefaultLocale?? && xPathImmagineListaByDefaultLocale?has_content> 79 <#if xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?? && xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale)?has_content> 80 <#assign immagineListaByDefaultLocale = xPathImmagineListaByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 81 </#if> 82 </#if> 83 <#assign xPathImmagineBannerByDefaultLocale = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")> 84 85 <#assign immagineBannerByDefaultLocale = xPathImmagineBannerByDefaultLocale.selectSingleNode(rootElementByDefaultLocale).getStringValue()> 86 87 <#if immagineListaByDefaultLocale?trim?has_content> 88 <#assign immagineByDefaultLocale = immagineListaByDefaultLocale> 89 <#else> 90 <#assign immagineByDefaultLocale = immagineBannerByDefaultLocale> 91 </#if> 92 93 <#if validator.isNotNull(immagineByDefaultLocale)> 94 <#attempt> 95 <#assign imgJsonByDefaultLocale = jsonFactoryUtil.createJSONObject(immagineByDefaultLocale)> 96 <#assign url = "/documents/"+ imgJsonByDefaultLocale.groupId +"/" +imgJsonByDefaultLocale.classPK +"/"+ imgJsonByDefaultLocale.title +"/"+imgJsonByDefaultLocale.uuid + "?width=600" > 97 <#recover> 98 <#assign url = ""> 99 </#attempt> 100 </#if> 101 <#recover> 102 </#attempt> 103 <#--CONTENT BY DEFAULT LOCALE--> 104 105 <#assign urlTitle = ja.getUrlTitle() /> 106 <#assign document = saxReaderUtil.read(contentByLocale) > 107 <#assign rootElement = document.getRootElement()> 108 <#assign xPathTitolo = "" /> 109 <#assign xPathSottotitolo_abstract = "" /> 110 <#assign xPathImmagineBanner = "" /> 111 <#assign xPathTextAltImg = "" /> 112 <#assign textAltImg = "" /> 113 <#assign destinationPage = "" /> 114 <#assign immagineLista = ""> 115 <#assign textAltImgLista = ""> 116 <#assign immagine = ""> 117 <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")> 118 <#assign xPathSottotitolo_abstract = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")> 119 120 <#assign xPathImmagineLista = saxReaderUtil.createXPath("dynamic-element[@name='immagine_lista']")> 121 <#if xPathImmagineLista?? && xPathImmagineLista?has_content> 122 <#if xPathImmagineLista.selectSingleNode(rootElement)?? && xPathImmagineLista.selectSingleNode(rootElement)?has_content> 123 <#assign immagineLista = xPathImmagineLista.selectSingleNode(rootElement).getStringValue()> 124 </#if> 125 </#if> 126 <#assign xPathTextAltImgLista = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_lista']")> 127 <#if xPathTextAltImgLista?? && xPathTextAltImgLista?has_content> 128 <#if xPathTextAltImgLista.selectSingleNode(rootElement)?? && xPathTextAltImgLista.selectSingleNode(rootElement)?has_content> 129 <#assign textAltImgLista = xPathTextAltImgLista.selectSingleNode(rootElement).getStringValue()> 130 </#if> 131 </#if> 132 133 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='banner']")> 134 <#assign xPathTextAltImg = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_banner']")> 135 <#assign textAltImg = xPathTextAltImg.selectSingleNode(rootElement).getStringValue()> 136 <#assign destinationPage = "${currentSiteUrl}${currentSiteFriendlyUrl}/search/-/search/${subpage}/${urlTitle}" /> 137 <#assign titolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()> 138 <#assign sottotitolo_abstract = xPathSottotitolo_abstract.selectSingleNode(rootElement).getStringValue()> 139 140 <#assign immagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()> 141 <#if !textAltImg?has_content> 142 <#assign textAltImg = titolo> 143 </#if> 144 145 <#if immagineLista?trim?has_content> 146 <#assign immagine = immagineLista> 147 <#assign textAltImg = textAltImgLista> 148 <#else> 149 <#assign immagine = immagineBanner> 150 </#if> 151 152 <#if validator.isNotNull(immagine)> 153 <#attempt> 154 <#assign imgJson = jsonFactoryUtil.createJSONObject(immagine)> 155 <#assign url = "/documents/"+ imgJson.groupId +"/" +imgJson.classPK +"/"+ imgJson.title +"/"+imgJson.uuid + "?width=600" > 156 <#recover> 157 </#attempt> 158 </#if> 159 <div class="card-container col-12 col-md-6 col-lg-4 ${colorebordo}"> 160 <div class="row"> 161 <div class="card"> 162 <a href="${destinationPage}"> 163 <img class="card-img-top" src="${url}" alt="${textAltImg}"> 164 <div class="card-body"> 165 <h3 class="card-title">${titolo}</h3> 166 <p class="card-text">${sottotitolo_abstract}</p> 167 </div> 168 </a> 169 </div> 170 </div> 171 </div> 172 </#list> 173 </div> 174 </div> 175 <#else> 176 <div style="border: 1px solid red; padding:20px;"> 177 <h3 style="color: red;">Questo template supporta solo contenuti di tipo Web Content con struttura attrattori, eventi, itinerari, ricette, luoghi.</h3> 178 <h3 style="color: red;">Configurare opportunamente l'aggregatore risorse</h3> 179 </div> 180 </#if> 181</#if>



