Hoteis

An error occurred while processing the template.
The following has evaluated to null or missing:
==> showWhenUserLoggedin  [in template "20101#20128#1130052" at line 113, column 29]

----
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: ${getterUtil.getBoolean(showWhenUserL...  [in template "20101#20128#1130052" at line 113, column 5]
----
1<#assign uuid=randomNamespace /> 
2<style> 
3.uv-hotels__educational-area__container { 
4    padding: 0 24px; 
5
6 
7.uv-hotels__educational-area__container p { 
8    margin: 0; 
9
10 
11.uv-hotels__educational-area__header { 
12    display: flex; 
13    flex-direction: column; 
14    align-items: flex-start; 
15    gap: 4px; 
16
17 
18.uv-hotels__educational-area__title { 
19    color: #100d0a; 
20    font-weight: 400; 
21    font-size: 32px; 
22    line-height: 40px; 
23    letter-spacing: -0.02em; 
24
25 
26.uv-hotels__educational-area__cta { 
27    font-style: normal; 
28    font-weight: 600; 
29    font-size: 16px; 
30    line-height: 100%; 
31    color: #100d0a; 
32
33 
34.uv-hotels__educational-area__cards { 
35    list-style: none; 
36    padding: 0; 
37    margin: 0; 
38    position: relative; 
39    display: flex; 
40    flex-wrap: nowrap; 
41    align-items: stretch; 
42    gap: 24px; 
43    overflow: hidden; 
44    scroll-behavior: smooth; 
45    -webkit-overflow-scrolling: touch; 
46    scroll-snap-type: x mandatory; 
47
48 
49.uv-hotels__educational-area__card { 
50    display: flex; 
51    flex-direction: column; 
52    align-items: flex-start; 
53    padding: 24px; 
54    min-width: 100%; 
55    scroll-snap-align: start; 
56    min-height: 120px; 
57    border: 1.5px solid #ebe6e1; 
58    border-radius: 16px; 
59    display: flex; 
60    flex-direction: column; 
61    gap: 8px; 
62
63 
64.uv-hotels__educational-area__card__title p { 
65    font-style: normal; 
66    font-weight: 400; 
67    font-size: 20px; 
68    line-height: 135%; 
69    letter-spacing: -0.02em; 
70    color: #100d0a; 
71
72 
73.uv-hotels__educational-area__card__description p { 
74    font-style: normal; 
75    font-weight: 400; 
76    font-size: 14px; 
77    line-height: 125%; 
78    color: #564f4d; 
79
80 
81@media (min-width: 1024px) { 
82    .uv-hotels__educational-area__container { 
83        padding: 0 40px; 
84
85 
86    .uv-hotels__educational-area__card { 
87        width: 272px; 
88        min-width: 240px; 
89
90 
91    .uv-hotels__educational-area__slider__controls { 
92        display: none; 
93
94
95 
96@media (min-width: 768px) { 
97    .uv-hotels__educational-area__header { 
98        align-items: center; 
99        justify-content: space-between; 
100        margin-bottom: 24px; 
101        flex-direction: row; 
102
103 
104    .uv-hotels__educational-area__title { 
105        font-size: 24px; 
106        line-height: 135%; 
107        letter-spacing: -0.02em; 
108
109
110</style> 
111<section class=" 
112    uv-hotels__educational-area__container  
113    ${getterUtil.getBoolean(showWhenUserLoggedin.getData())?then('uv-hotels__educational-area__container--logged-in', '')}  
114    ${getterUtil.getBoolean(showWhenVisitant.getData())?then('uv-hotels__educational-area__container--visitant', '')} " 
115    style="display: none;"> 
116    <#if ((title.getData())?? && title.getData() !="" ) || ((cta.getData())?? && cta.getData() !="" )> 
117        <!-- Header --> 
118        <header class="uv-hotels__educational-area__header"> 
119            <#if (title.getData())?? && title.getData() !=""> 
120                <!-- Title --> 
121                <p class="uv-hotels__educational-area__title"> 
122                    ${title.getData()} 
123                </p> 
124            </#if> 
125            <#if (cta.getData())?? && cta.getData() !=""> 
126                <!-- CTA --> 
127                <p class="uv-hotels__educational-area__cta"> 
128                    ${cta.getData()} 
129                </p> 
130            </#if> 
131        </header> 
132    </#if> 
133    <!-- Cards --> 
134    <ul class="uv-hotels__educational-area__cards" id="${uuid}__uv-hotels__educational-area__cards"> 
135        <#if card_item.getSiblings()?has_content> 
136            <#list card_item.getSiblings() as card> 
137                <!-- Card --> 
138                <li class="uv-hotels__educational-area__card"> 
139                    <!-- Image --> 
140                    <#if (card.card_image.getData())?? && card.card_image.getData() !=""> 
141                        <img alt="${card.card_image.getAttribute("alt")}" data-fileentryid="${card.card_image.getAttribute("fileEntryId")}" src="${card.card_image.getData()}" /> 
142                    </#if> 
143                    <#if (card.card_title.getData())?? && card.card_title.getData() !=""> 
144                        <!-- Card Title --> 
145                        <div class="uv-hotels__educational-area__card__title"> 
146                            ${card.card_title.getData()} 
147                        </div> 
148                    </#if> 
149                    <#if (card.card_description.getData())?? && card.card_description.getData() !=""> 
150                        <!-- Card Text --> 
151                        <div class="uv-hotels__educational-area__card__description"> 
152                            ${card.card_description.getData()} 
153                        </div> 
154                    </#if> 
155                </li> 
156            </#list> 
157        </#if> 
158    </ul> 
159    <div class="${uuid}__nav__container"> 
160        <div> 
161</section> 
162<script> 
163document.addEventListener("DOMContentLoaded", function() { 
164    try { 
165        const carousel = new uvHandlerCarouselDefault({ 
166            container: document.querySelector("#${uuid}__uv-hotels__educational-area__cards"), 
167            cards: document.querySelectorAll("#${uuid}__uv-hotels__educational-area__cards .uv-hotels__educational-area__card"), 
168            navContainer: document.querySelector(".${uuid}__nav__container"), 
169            colorDefault: "#100D0A", 
170            uuid: "${uuid}" 
171        }); 
172        const hasLoggedInFlag = !!${showWhenUserLoggedin.getData()}; 
173        const hasVisitantFlag = !!${showWhenVisitant.getData()}; 
174        const checkUserLoginStatus = () => !!localStorage.getItem("smls-user-data"); 
175 
176        let attempts = 0; 
177        const maxAttempts = 10; 
178        const intervalTime = 500; 
179        const checkLocalStorage = setInterval(() => { 
180            attempts++; 
181            const isLoggedIn = checkUserLoginStatus(); 
182            const isLoggedOut = !isLoggedIn; 
183            const selector = hasLoggedInFlag ? "logged-in" : hasVisitantFlag ? "visitant" : ""; 
184            const contentContainer = document.querySelector(".uv-hotels__educational-area__container--" + selector); 
185            if (isLoggedIn && hasLoggedInFlag) { 
186                if (contentContainer) contentContainer.style.display = "block"; 
187                clearInterval(checkLocalStorage); 
188            } else if (isLoggedOut && hasVisitantFlag) { 
189                if (contentContainer) contentContainer.style.display = "block"; 
190                clearInterval(checkLocalStorage); 
191
192            if (attempts >= maxAttempts) { 
193                clearInterval(checkLocalStorage); 
194                console.warn("Parando a verificação: O localStorage não foi atualizado a tempo."); 
195
196        }, intervalTime); 
197    } catch (error) { 
198        console.error("Erro ao inicializar o componente do Liferay uv_hotels_educational:", error); 
199
200}); 
201</script> 

Quer viajar com o UV?

Encontre a melhor hospedagem com a Smiles

Hospedagem

Quer viajar com o UV?

Encontre a melhor hospedagem com a Smiles

Buscar hotéis

Hospedagem

Aproveite o momento Ulitmas Horas

15% OFF

Buscar promoções

BORA VOAR - 28/01/2025

REVALIDAÇÃO

SEM TEXTO

Voos

SEM NADA AQUI

DESCRIÇÃO VAZIA PARA VALIDAR LAYOUT - 2025

UM TEXTO PARA VALIDAR QUE O LAYOUT SEGUE INTACTO

Viaje pelo exterior - teste jess

Viaje pelo mobile

Vários destinos com culturas diferentes para você conhecer Viaje pelo mobile
Diárias a partir de

30.000 milhas

icone clube smiles icone cliente diamante
Lisboa
Diárias a partir de

20.999 milhas

icone clube smiles icone cliente diamante
Londres
Diárias a partir de

20.999 milhas

icone clube smiles icone cliente diamante
Berlim
Diárias a partir de

20.999 milhas

icone clube smiles icone cliente diamante
Nova Iorque
Diárias a partir de

20.999 milhas

icone clube smiles icone cliente diamante

Viaje pelo Brasilzão

Vários destinos com culturas diferentes para você conhecer

Salvador

Rio de Janeiro

Recife

São Paulo


ilha deserta
An error occurred while processing the template.
The following has evaluated to null or missing:
==> showWhenUserLoggedin  [in template "20101#20128#1130052" at line 113, column 29]

----
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: ${getterUtil.getBoolean(showWhenUserL...  [in template "20101#20128#1130052" at line 113, column 5]
----
1<#assign uuid=randomNamespace /> 
2<style> 
3.uv-hotels__educational-area__container { 
4    padding: 0 24px; 
5
6 
7.uv-hotels__educational-area__container p { 
8    margin: 0; 
9
10 
11.uv-hotels__educational-area__header { 
12    display: flex; 
13    flex-direction: column; 
14    align-items: flex-start; 
15    gap: 4px; 
16
17 
18.uv-hotels__educational-area__title { 
19    color: #100d0a; 
20    font-weight: 400; 
21    font-size: 32px; 
22    line-height: 40px; 
23    letter-spacing: -0.02em; 
24
25 
26.uv-hotels__educational-area__cta { 
27    font-style: normal; 
28    font-weight: 600; 
29    font-size: 16px; 
30    line-height: 100%; 
31    color: #100d0a; 
32
33 
34.uv-hotels__educational-area__cards { 
35    list-style: none; 
36    padding: 0; 
37    margin: 0; 
38    position: relative; 
39    display: flex; 
40    flex-wrap: nowrap; 
41    align-items: stretch; 
42    gap: 24px; 
43    overflow: hidden; 
44    scroll-behavior: smooth; 
45    -webkit-overflow-scrolling: touch; 
46    scroll-snap-type: x mandatory; 
47
48 
49.uv-hotels__educational-area__card { 
50    display: flex; 
51    flex-direction: column; 
52    align-items: flex-start; 
53    padding: 24px; 
54    min-width: 100%; 
55    scroll-snap-align: start; 
56    min-height: 120px; 
57    border: 1.5px solid #ebe6e1; 
58    border-radius: 16px; 
59    display: flex; 
60    flex-direction: column; 
61    gap: 8px; 
62
63 
64.uv-hotels__educational-area__card__title p { 
65    font-style: normal; 
66    font-weight: 400; 
67    font-size: 20px; 
68    line-height: 135%; 
69    letter-spacing: -0.02em; 
70    color: #100d0a; 
71
72 
73.uv-hotels__educational-area__card__description p { 
74    font-style: normal; 
75    font-weight: 400; 
76    font-size: 14px; 
77    line-height: 125%; 
78    color: #564f4d; 
79
80 
81@media (min-width: 1024px) { 
82    .uv-hotels__educational-area__container { 
83        padding: 0 40px; 
84
85 
86    .uv-hotels__educational-area__card { 
87        width: 272px; 
88        min-width: 240px; 
89
90 
91    .uv-hotels__educational-area__slider__controls { 
92        display: none; 
93
94
95 
96@media (min-width: 768px) { 
97    .uv-hotels__educational-area__header { 
98        align-items: center; 
99        justify-content: space-between; 
100        margin-bottom: 24px; 
101        flex-direction: row; 
102
103 
104    .uv-hotels__educational-area__title { 
105        font-size: 24px; 
106        line-height: 135%; 
107        letter-spacing: -0.02em; 
108
109
110</style> 
111<section class=" 
112    uv-hotels__educational-area__container  
113    ${getterUtil.getBoolean(showWhenUserLoggedin.getData())?then('uv-hotels__educational-area__container--logged-in', '')}  
114    ${getterUtil.getBoolean(showWhenVisitant.getData())?then('uv-hotels__educational-area__container--visitant', '')} " 
115    style="display: none;"> 
116    <#if ((title.getData())?? && title.getData() !="" ) || ((cta.getData())?? && cta.getData() !="" )> 
117        <!-- Header --> 
118        <header class="uv-hotels__educational-area__header"> 
119            <#if (title.getData())?? && title.getData() !=""> 
120                <!-- Title --> 
121                <p class="uv-hotels__educational-area__title"> 
122                    ${title.getData()} 
123                </p> 
124            </#if> 
125            <#if (cta.getData())?? && cta.getData() !=""> 
126                <!-- CTA --> 
127                <p class="uv-hotels__educational-area__cta"> 
128                    ${cta.getData()} 
129                </p> 
130            </#if> 
131        </header> 
132    </#if> 
133    <!-- Cards --> 
134    <ul class="uv-hotels__educational-area__cards" id="${uuid}__uv-hotels__educational-area__cards"> 
135        <#if card_item.getSiblings()?has_content> 
136            <#list card_item.getSiblings() as card> 
137                <!-- Card --> 
138                <li class="uv-hotels__educational-area__card"> 
139                    <!-- Image --> 
140                    <#if (card.card_image.getData())?? && card.card_image.getData() !=""> 
141                        <img alt="${card.card_image.getAttribute("alt")}" data-fileentryid="${card.card_image.getAttribute("fileEntryId")}" src="${card.card_image.getData()}" /> 
142                    </#if> 
143                    <#if (card.card_title.getData())?? && card.card_title.getData() !=""> 
144                        <!-- Card Title --> 
145                        <div class="uv-hotels__educational-area__card__title"> 
146                            ${card.card_title.getData()} 
147                        </div> 
148                    </#if> 
149                    <#if (card.card_description.getData())?? && card.card_description.getData() !=""> 
150                        <!-- Card Text --> 
151                        <div class="uv-hotels__educational-area__card__description"> 
152                            ${card.card_description.getData()} 
153                        </div> 
154                    </#if> 
155                </li> 
156            </#list> 
157        </#if> 
158    </ul> 
159    <div class="${uuid}__nav__container"> 
160        <div> 
161</section> 
162<script> 
163document.addEventListener("DOMContentLoaded", function() { 
164    try { 
165        const carousel = new uvHandlerCarouselDefault({ 
166            container: document.querySelector("#${uuid}__uv-hotels__educational-area__cards"), 
167            cards: document.querySelectorAll("#${uuid}__uv-hotels__educational-area__cards .uv-hotels__educational-area__card"), 
168            navContainer: document.querySelector(".${uuid}__nav__container"), 
169            colorDefault: "#100D0A", 
170            uuid: "${uuid}" 
171        }); 
172        const hasLoggedInFlag = !!${showWhenUserLoggedin.getData()}; 
173        const hasVisitantFlag = !!${showWhenVisitant.getData()}; 
174        const checkUserLoginStatus = () => !!localStorage.getItem("smls-user-data"); 
175 
176        let attempts = 0; 
177        const maxAttempts = 10; 
178        const intervalTime = 500; 
179        const checkLocalStorage = setInterval(() => { 
180            attempts++; 
181            const isLoggedIn = checkUserLoginStatus(); 
182            const isLoggedOut = !isLoggedIn; 
183            const selector = hasLoggedInFlag ? "logged-in" : hasVisitantFlag ? "visitant" : ""; 
184            const contentContainer = document.querySelector(".uv-hotels__educational-area__container--" + selector); 
185            if (isLoggedIn && hasLoggedInFlag) { 
186                if (contentContainer) contentContainer.style.display = "block"; 
187                clearInterval(checkLocalStorage); 
188            } else if (isLoggedOut && hasVisitantFlag) { 
189                if (contentContainer) contentContainer.style.display = "block"; 
190                clearInterval(checkLocalStorage); 
191
192            if (attempts >= maxAttempts) { 
193                clearInterval(checkLocalStorage); 
194                console.warn("Parando a verificação: O localStorage não foi atualizado a tempo."); 
195
196        }, intervalTime); 
197    } catch (error) { 
198        console.error("Erro ao inicializar o componente do Liferay uv_hotels_educational:", error); 
199
200}); 
201</script> 

Junte milhas mais rápido com o Clube Smiles

 

Benefícios e promoções exclusivas, além de milhas todo mês ao fazer parte do clube de assinatura da Smiles.

Saiba mais

    Dúvidas Mais Comuns de Geral -QA

    Mostrar mais perguntas