An error occurred while processing the template.
The following has evaluated to null or missing:
==> result.getJSONObject("data").getJSONArray("items")  [in template "1084819#1084854#4104773" at line 26, column 11]

----
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: doc = result.getJSONObject("data").ge...  [in template "1084819#1084854#4104773" at line 26, column 5]
	- Reached through: #assign-container  [in template "1084819#1084854#4104773" at line 24, column 1]
----
1<#import "_TEMPLATE_CONTEXT_/1084819/1099604/23609/2387505" as d40> 
2 
3<#assign 
4    SRLS = serviceLocator.findService("eu.suggesto.servicecs.service.SuggestoRecommenderLocalService") 
5    PUTIL = objectUtil("com.liferay.portal.kernel.util.PortalUtil") 
6    jsonParams = result.getNamespacedParameters().getString("jsonParams") 
7    serviceName = "tdm40" 
8    collection = "tdm_sila" 
9    query = "{'id': 0}" 
10    id = "" 
11/> 
12 
13<#if jsonParams?has_content> 
14    <#assign 
15        params = d40.createObject(jsonParams) 
16        id = params.getString("id") 
17    /> 
18     
19    <#if id?has_content> 
20        <#assign query = "{'id': ${id}}"> 
21    </#if> 
22</#if> 
23 
24<#assign 
25    result = SRLS.search("0", serviceName, collection, query, "", 0, 1) 
26    doc = result.getJSONObject("data").getJSONArray("items").getJSONObject(0) 
27/> 
28 
29<#if doc.getString("title")?has_content> 
30    ${PUTIL.setPageTitle(doc.getString("title")?capitalize, request)} 
31</#if> 
32 
33<section id="banner" class="tw:h-[20vh] lg:tw:h-[45vh] tw:overflow-hidden"> 
34    <div class="card card-flat tw:w-full tw:h-full"> 
35        <img data-src="${doc.op_img_url}" loading="lazy" class="lazyload tw:w-full tw:h-full tw:object-cover" alt="${doc.title?js_string}"/> 
36        <div class="card-img-overlay tw:bg-gradient-to-b tw:from-transparent tw:via-trasparent tw:to-dark/40 <lg:tw:hidden"></div> 
37    </div> 
38</section> 
39 
40 
41 
42<div class="container tw:my-10 lg:tw:my-20"> 
43    <div class="card-row"> 
44        <div class="autofit-col autofit-col-expand"> 
45            <div class="autofit-section"> 
46                <p class="tw:text-dark tw:text-2xl tw:font-semibold tw:mb-5 lg:tw:text-5xl"> 
47                    ${doc.title} 
48                </p> 
49            </div> 
50        </div> 
51        <div class="autofit-col tw:mt-auto <lg:tw:hidden"> 
52            <a href="/dormire" class="btn btn-block tw:border-2 tw:border-dark tw:text-dark tw:text-base hover:tw:bg-dark hover:tw:text-white tw:transition-colors tw:duration-300 tw:py-4 tw:inline-block"> 
53                ${d40.getLabel("torna_indietro")} 
54            </a> 
55        </div> 
56    </div> 
57</div> 
58 
59<div class="tw:bg-lightgray"> 
60    <div class="container tw:py-10"> 
61        <div class="row"> 
62            <div class="col-12 col-lg-6"> 
63                <div class="aspect-ratio aspect-ratio-4-to-3 tw:rounded-md"> 
64                    <img data-src="${doc.op_img_url}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:w-full tw:h-full tw:object-cover" alt="${doc.title?js_string}" /> 
65                </div> 
66            </div> 
67             
68            <div class="col-12 col-lg-6"> 
69                <div class="lg:tw:ml-10 <lg:tw:mt-10"> 
70                    <div class="tw:space-y-4 tw:mb-5"> 
71                        <div class="card-row tw:space-x-3"> 
72                            <div class="autofit-col"> 
73                                <div class="autofit-section"> 
74                                    <div class="center-child tw:border-2 tw:border-dark tw:rounded-full tw:h-20 tw:w-20"> 
75                                        <i class="fas fa-paw tw:text-dark fa-2x"></i> 
76                                    </div> 
77                                </div> 
78                            </div> 
79                            <div class="autofit-col autofit-col-expand"> 
80                                <div class="autofit-section"> 
81                                    <p class="tw:text-dark tw:font-semibold tw:uppercase tw:mb-2">${d40.getLabel("animali_ammessi")}</p> 
82                                    <p class="tw:text-dark text-capitalize">${doc.op_animals}</p> 
83                                </div> 
84                            </div> 
85                        </div> 
86                    </div> 
87                     
88                    <div class="tw:space-y-4 tw:mb-5"> 
89                        <div class="card-row tw:space-x-3"> 
90                            <div class="autofit-col"> 
91                                <div class="autofit-section"> 
92                                    <div class="center-child tw:border-2 tw:border-dark tw:rounded-full tw:h-20 tw:w-20"> 
93                                        <i class="fas fa-restroom tw:text-dark fa-2x"></i> 
94                                    </div> 
95                                </div> 
96                            </div> 
97                            <div class="autofit-col autofit-col-expand"> 
98                                <div class="autofit-section"> 
99                                    <p class="tw:text-dark tw:font-semibold tw:uppercase tw:mb-2">${d40.getLabel("bagno")}</p> 
100                                    <p class="tw:text-dark text-capitalize">${doc.op_bathroom}</p> 
101                                </div> 
102                            </div> 
103                        </div> 
104                    </div> 
105                     
106                    <div class="tw:space-y-4 tw:mb-5"> 
107                        <div class="card-row tw:space-x-3"> 
108                            <div class="autofit-col"> 
109                                <div class="autofit-section"> 
110                                    <div class="center-child tw:border-2 tw:border-dark tw:rounded-full tw:h-20 tw:w-20"> 
111                                        <i class="fas fa-bed-alt tw:text-dark fa-2x"></i> 
112                                    </div> 
113                                </div> 
114                            </div> 
115                            <div class="autofit-col autofit-col-expand"> 
116                                <div class="autofit-section"> 
117                                    <p class="tw:text-dark tw:font-semibold tw:uppercase tw:mb-2">${d40.getLabel("camera_letto")}</p> 
118                                    <p class="tw:text-dark text-capitalize">si</p> 
119                                    <#-- ${doc.op_bedroom}--> 
120                                </div> 
121                            </div> 
122                        </div> 
123                    </div> 
124                     
125                    <div class="tw:space-y-4 tw:mb-5"> 
126                        <div class="card-row tw:space-x-3"> 
127                            <div class="autofit-col"> 
128                                <div class="autofit-section"> 
129                                    <div class="center-child tw:border-2 tw:border-dark tw:rounded-full tw:h-20 tw:w-20"> 
130                                        <i class="fas fa-wifi tw:text-dark fa-2x"></i> 
131                                    </div> 
132                                </div> 
133                            </div> 
134                            <div class="autofit-col autofit-col-expand"> 
135                                <div class="autofit-section"> 
136                                    <p class="tw:text-dark tw:font-semibold tw:uppercase tw:mb-2">Internet</p> 
137                                    <p class="tw:text-dark text-capitalize">${doc.op_internet}</p> 
138                                </div> 
139                            </div> 
140                        </div> 
141                    </div> 
142                     
143                    <div class="tw:space-y-4 tw:mb-5"> 
144                        <div class="card-row tw:space-x-3"> 
145                            <div class="autofit-col"> 
146                                <div class="autofit-section"> 
147                                    <div class="center-child tw:border-2 tw:border-dark tw:rounded-full tw:h-20 tw:w-20"> 
148                                        <i class="fas fa-utensils tw:text-dark fa-2x"></i> 
149                                    </div> 
150                                </div> 
151                            </div> 
152                            <div class="autofit-col autofit-col-expand"> 
153                                <div class="autofit-section"> 
154                                    <p class="tw:text-dark tw:font-semibold tw:uppercase tw:mb-2">${d40.getLabel("cucina")}</p> 
155                                    <p class="tw:text-dark text-capitalize">${doc.op_kitchen}</p> 
156                                </div> 
157                            </div> 
158                        </div> 
159                    </div> 
160                     
161                    <div class="tw:space-y-4 tw:mb-5"> 
162                        <div class="card-row tw:space-x-3"> 
163                            <div class="autofit-col"> 
164                                <div class="autofit-section"> 
165                                    <div class="center-child tw:border-2 tw:border-dark tw:rounded-full tw:h-20 tw:w-20"> 
166                                        <i class="fas fa-parking tw:text-dark fa-2x"></i> 
167                                    </div> 
168                                </div> 
169                            </div> 
170                            <div class="autofit-col autofit-col-expand"> 
171                                <div class="autofit-section"> 
172                                    <p class="tw:text-dark tw:font-semibold tw:uppercase tw:mb-2">${d40.getLabel("parcheggio")}</p> 
173                                    <p class="tw:text-dark text-capitalize">${doc.op_parking}</p> 
174                                </div> 
175                            </div> 
176                        </div> 
177                    </div> 
178                     
179                    <#-- 
180                    <div class="card-row"> 
181                        <div class="autofit-col"> 
182                            <div class="autofit-section"> 
183                                <a href="#request-info" class="btn btn-block tw:border-2 tw:border-dark tw:text-dark tw:text-base hover:tw:bg-dark hover:tw:text-white tw:transition-colors tw:duration-300 tw:py-4 tw:uppercase tw:px-5"> 
184                                    ${d40.getLabel("richiedi_info")} 
185                                </a> 
186                            </div> 
187                        </div> 
188                    </div> 
189                    --> 
190                </div> 
191            </div> 
192        </div> 
193    </div> 
194</div> 
195 
196<#if doc.op_gallery?has_content> 
197    <div id="gallery" class="container tw:relative tw:my-10"> 
198        <div class="swiper-container"> 
199            <button type="button" class="btn-prev semicircle-right tw:bg-dark/70 tw:w-7 tw:h-14 tw:left-0 tw:top-2/4 tw:-translate-y-2/4 tw:absolute tw:z-5"> 
200                <span class="sr-only">${d40.getLabel("precedente")}</span> 
201                <i class="fal fa-chevron-left tw:text-white"></i> 
202            </button> 
203            <button type="button" class="btn-next semicircle-left tw:bg-dark/70 tw:w-7 tw:h-14 tw:right-0 tw:top-2/4 tw:-translate-y-2/4 tw:absolute tw:z-5"> 
204                <span class="sr-only">${d40.getLabel("successivo")}</span> 
205                <i class="fal fa-chevron-right tw:text-white"></i> 
206            </button> 
207             
208            <div class="swiper-wrapper"> 
209                <#list doc.op_gallery?split(",") as slide> 
210                    <div class="swiper-slide"> 
211                        <a href="javascript:void(0);" data-toggle="modal" data-target="#lightbox-modal" data-slider="${slide?index}"> 
212                            <div class="aspect-ratio aspect-ratio-4-to-3 tw:rounded-md tw:shadow-2xl"> 
213                                <img data-src="${slide}" loading="lazy" class="lazyload aspect-ratio-item-fluid tw:object-cover tw:w-full tw:h-full" alt="image ${slide?counter}" /> 
214                            </div> 
215                        </a> 
216                    </div> 
217                </#list> 
218            </div> 
219        </div> 
220    </div> 
221     
222    <div id="lightbox-modal" tabindex="-1" role="dialog" class="modal fade"> 
223        <div class="modal-dialog modal-full-screen tw:inset-0 tw:border-none tw:shadow-none"> 
224            <div class="modal-content tw:bg-transparent"> 
225                <div class="modal-body tw:overflow-hidden"> 
226                    <div class="tw:absolute tw:top-0 tw:right-0 tw:z-5"> 
227                        <button type="button" data-dismiss="modal" class="btn btn-monospaced btn-secondary m-3"> 
228                            <i class="fal fa-times fa-lg"></i> 
229                        </button> 
230                    </div> 
231                    <div id="lightbox-swiper" class="swiper-container tw:h-3/4 tw:my-auto"> 
232                        <div class="swiper-button-prev tw:w-12 tw:h-12"> 
233                            <span class="sticker sticker-circle tw:bg-green tw:w-full tw:h-full"> 
234                                <span class="sticker-overlay"> 
235                                    <i class="fas fa-chevron-left fa-2x tw:text-white"></i> 
236                                </span> 
237                            </span> 
238                        </div> 
239                        <div class="swiper-button-next tw:w-12 tw:h-12"> 
240                            <span class="sticker sticker-circle tw:bg-green tw:w-full tw:h-full"> 
241                                <span class="sticker-overlay"> 
242                                    <i class="fas fa-chevron-right fa-2x tw:text-white"></i> 
243                                </span> 
244                            </span> 
245                        </div> 
246                        <div class="swiper-wrapper tw:h-full"> 
247                            <#list doc.op_gallery?split(",") as slide> 
248                                <div class="swiper-slide tw:h-full"> 
249                                    <img data-src="${slide}" loading="lazy" class="lazyload tw:h-full tw:object-contain tw:mx-auto" alt="image ${slide?counter}" /> 
250                                </div> 
251                            </#list> 
252                        </div> 
253                    </div> 
254                    <div id="thumbnail-swiper" class="swiper-container"> 
255                        <div class="swiper-wrapper"> 
256                            <#list doc.op_gallery?split(",") as slide> 
257                                <div class="swiper-slide"> 
258                                    <img data-src="${slide}" loading="lazy" class="lazyload tw:object-cover tw:cursor-pointer tw:h-full tw:w-full" alt="image ${slide?counter}" /> 
259                                </div> 
260                            </#list> 
261                        </div> 
262                    </div> 
263                </div> 
264            </div> 
265        </div> 
266    </div> 
267</#if> 
268 
269<#if doc.content?has_content> 
270    <div class="container tw:my-10 lg:tw:my-20"> 
271        <p class="tw:text-dark tw:text-xl tw:font-semibold tw:mb-5 lg:tw:text-4xl">${d40.getLabel("nel_dettaglio")}</p> 
272        <p class="tw:text-dark"> 
273            ${doc.content} 
274        </p> 
275    </div> 
276</#if> 
277 
278<section id="contacts" class="tw:my-20"> 
279    <div class="tw:bg-lightgray"> 
280        <div class="container tw:py-5 lg:tw:py-25"> 
281            <p class="tw:text-dark tw:text-xl tw:font-semibold tw:uppercase tw:mb-10 lg:tw:text-3xl lg:mb-15"> 
282                ${d40.getLabel("dati_contatto")} 
283            </p> 
284            <div class="row"> 
285                <div class="col-12 col-lg-6"> 
286                    <div class="card-row tw:space-x-3 tw:mb-4"> 
287                        <div class="autofit-col"> 
288                            <div class="autofit-section"> 
289                                <div class="center-child tw:border-2 tw:border-dark tw:rounded-md tw:h-10 tw:w-10"> 
290                                    <span class="sr-only">Location</span> 
291                                    <i class="fas fa-map-marker-alt tw:text-dark fa-lg"></i> 
292                                </div> 
293                            </div> 
294                        </div> 
295                        <div class="autofit-col autofit-col-expand"> 
296                            <div class="autofit-section"> 
297                                <p class="tw:text-dark"> 
298                                    ${doc.op_address} 
299                                </p> 
300                            </div> 
301                        </div> 
302                    </div> 
303                </div> 
304            </div> 
305        </div> 
306    </div> 
307</section> 
308 
309<#if doc.op_gallery?has_content> 
310    <script> 
311        document.addEventListener("DOMContentLoaded", () => { 
312            new Swiper("#gallery .swiper-container", { 
313    			slidesPerView: 1, 
314    			spaceBetween: 25, 
315    			centerSlides: true, 
316    			centerInsufficientSlides: true, 
317    			navigation: { 
318    				prevEl: ".btn-prev", 
319    				nextEl: ".btn-next", 
320    			}, 
321    			breakpoints: { 
322    				768: { 
323    					slidesPerView: 2, 
324    					spaceBetween: 25, 
325    				}, 
326    				992: { 
327    					slidesPerView: 3, 
328    					spaceBetween: 25, 
329    				}, 
330    			}, 
331    		}); 
332     
333    		var thumbnails = new Swiper("#thumbnail-swiper", { 
334    			spaceBetween: 10, 
335    			slidesPerView: 2, 
336    			centerInsufficientSlides: true, 
337    			freeMode: true, 
338    			watchSlidesVisibility: true, 
339    			watchSlidesProgress: true, 
340    			breakpoints: { 
341    				768: { 
342    					slidesPerView: 3, 
343    				}, 
344    				992: { 
345    					slidesPerView: 4, 
346    				}, 
347    				1200: { 
348    					slidesPerView: 5, 
349    				}, 
350    			}, 
351    		}); 
352     
353    		var lightbox = new Swiper("#lightbox-swiper", { 
354    			spaceBetween: 10, 
355    			autoHeight: true, 
356    			observer: true, 
357    			observeSlideChildren: true, 
358    			keyboard: { 
359    				enabled: true, 
360    			}, 
361    			navigation: { 
362    				nextEl: ".swiper-button-next", 
363    				prevEl: ".swiper-button-prev", 
364    			}, 
365    			thumbs: { 
366    				swiper: thumbnails, 
367    			}, 
368    		}); 
369     
370    		$("#lightbox-modal").on("shown.bs.modal", function (e) { 
371    			lightbox.update(); 
372    			thumbnails.update(); 
373    			lightbox.slideTo($(e.relatedTarget).data("slider")); 
374    			lightbox.update(); 
375    		}); 
376     
377    		$("#lightbox-modal .swiper-wrapper").on("click", function (e) { 
378    			if ($(e.target).attr("class").includes("swiper-slide")) { 
379    				$("#lightbox-modal").modal("hide"); 
380
381    		}); 
382        }); 
383    </script> 
384</#if>