An error occurred while processing the template.
The following has evaluated to null or missing:
==> eta_min  [in template "383767#383802#402339" at line 73, column 96]

----
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: ${eta_min}  [in template "383767#383802#402339" at line 73, column 94]
----
1<#assign  
2    DLAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"] 
3    mkspAPI = serviceLocator.findService("eu.suggesto.suggestogui.service.SuggestoGuiLocalService") 
4     
5    serverName = request.getServerName() 
6    defLng = themeDisplay.getSiteDefaultLocale() 
7/> 
8 
9<section id="study-stay" data-aos="fade"> 
10    <div class="container-fluid py-5"> 
11        <div class="row justify-content-center"> 
12            <div class="col-12 col-lg-11"> 
13                <div class="text-dark"> 
14                    <h1 class="display-4">Soggiorni <br><span class="font-weight-bold">studio</span></h1> 
15                </div> 
16                <div class="row mt-5"> 
17                    <#if entries?has_content> 
18                        <#list entries as entry> 
19                            <#assign 
20                        		entry = entry 
21                        		assetRenderer = entry.getAssetRenderer() 
22                        		className = assetRenderer.getClassName() 
23                        		entryTitle = htmlUtil.escape(assetRenderer.getTitle(themeDisplay.getLocale())) 
24                        	/> 
25                        	 
26                        	<#if className == "com.liferay.journal.model.JournalArticle"> 
27                        	    <#assign 
28                        	        journalArticle = assetRenderer.getArticle() 
29                                    document = saxReaderUtil.read(journalArticle.getContent()) 
30                                    rootElement = document.getRootElement() 
31                                /> 
32                                 
33                                <#assign stringSelector = "dynamic-element[@name='anteprima']"> 
34                                <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)> 
35                                <#if xPathSelector.selectSingleNode(rootElement)??> 
36                                    <#assign 
37                                        immagine = xPathSelector.selectSingleNode(rootElement).getStringValue() 
38                                        fileEntryId = assetRenderer.getClassPK() 
39                                    /> 
40                                    <#if immagine?trim?has_content> 
41                                        <#assign 
42                                            jsonField = jsonFactoryUtil.createJSONObject(immagine) 
43                                            fileEntry = DLAppLocalServiceUtil.getFileEntryByUuidAndGroupId(jsonField.uuid, groupId) 
44                                            immagine = "/documents/" + jsonField.groupId + "/" + fileEntry.folderId + "/" + jsonField.title + "/" + jsonField.uuid 
45                                        /> 
46                                    <#else> 
47                                        <#assign immagine = "https://via.placeholder.com/450x300?text=Anteprima"> 
48                                    </#if> 
49                                </#if> 
50                                 
51                                <#assign stringSelector = "dynamic-element[@name='eta_min']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']"> 
52                                <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>  
53                                <#if xPathSelector.selectSingleNode(rootElement)??> 
54                                    <#assign eta_min = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
55                                </#if> 
56                                 
57                                <#assign stringSelector = "dynamic-element[@name='eta_max']/dynamic-content[@language-id = '" + themeDisplay.getLocale() + "']"> 
58                                <#assign xPathSelector = saxReaderUtil.createXPath(stringSelector)>  
59                                <#if xPathSelector.selectSingleNode(rootElement)??> 
60                                    <#assign eta_max = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
61                                </#if> 
62                                 
63                                <#assign viewUrl = mkspAPI.getArticleUrl(groupId, serverName, journalArticle.articleId, localeUtil.fromLanguageId(themeDisplay.getLocale()), defLng, "/placeholder")?keep_after("/web/guest")> 
64                                 
65                                <@setCategories /> 
66                     
67                                <div class="col-12 col-md-6 col-lg-4 mb-4"> 
68                                    <a href="/viaggi-studio" class="tab-horizontal rounded"> 
69                                        <div class="size-wrapper"> 
70                                            <img data-src="${getPrefix(immagine, 1280, 720)}" draggable="false" loading="lazy" class="w-100 h-100 lazyload fit-cover"> 
71                                            <div class="shade position-absolute d-flex flex-column justify-content-end align-items-start w-100 h-100 p-4"> 
72                                                <h2 class="text-white font-weight-bold mb-3">${entryTitle}</h2> 
73                                                <h2 class="text-white font-weight-bold mb-0">${eta_min} - ${eta_max}</h2> 
74                                                <p class="text-white mb-0">anni</p> 
75                                            </div> 
76                                        </div> 
77                                    </a> 
78                                </div> 
79                            </#if> 
80                        </#list> 
81                    </#if> 
82                </div> 
83            </div> 
84        </div> 
85    </div> 
86</section> 
87 
88<script> 
89    AUI().ready(function(){ 
90        $("a.tab-horizontal").on("click", function(e){ 
91            e.preventDefault(); 
92            var link = $(this).attr('href'); 
93            var cats = JSON.stringify(${selectedCategories}); 
94             
95            sessionStorage.setItem("fasce", cats); 
96            console.log("cats set"); 
97             
98            $(location).attr('href', link); 
99        });  
100    }); 
101</script> 
102 
103<#macro setCategories> 
104    <#assign selectedCategories> 
105
106        <#list entry.getCategories() as cat> 
107            <#if cat.vocabularyId == 433795> <#-- Fasce di età --> 
108
109                "categoryId" : "${cat.categoryId}", 
110                "label": "${cat.name}" 
111            }, 
112            </#if> 
113        </#list> 
114
115    </#assign> 
116</#macro> 
117 
118<#function getPrefix img width height> 
119    <#assign 
120        baseUrl = "https://d28r45jypu6nt9.cloudfront.net/o/d40/img/" 
121        siteUrl = themeDisplay.getURLPortal()?replace("://", ".") 
122        w = width 
123        h = height 
124    /> 
125    <#if height?is_string> 
126        <#assign prefix = baseUrl + "w_" + w + "/" + siteUrl> 
127    <#else> 
128        <#assign prefix = baseUrl + "w_" + w + ",h_" + h + "/" + siteUrl> 
129    </#if> 
130     
131    <#if !img?contains("/documents/")> 
132        <#assign prefix = ""> 
133    </#if> 
134     
135    <#return prefix + img> 
136</#function>