Se ha producido un error al procesar la plantilla.
Java method "com.liferay.portal.kernel.util.Http.URLtoString(String)" threw an exception when invoked on com.liferay.portal.template.TemplateContextHelper$HttpWrapper object "com.liferay.portal.template.TemplateContextHelper$HttpWrapper@38712bc9"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local response = CONSTANTS.CURRENT_H...  [in template "fiesta_americana_theme_SERVLET_CONTEXT_/templates/utils/api-hotels.ftl" in function "getHotelsByBrand" at line 16, column 3]
	- Reached through: #assign dataHotels = getHotelsByBrand...  [in template "20115#20151#BRAND-HERO-TEMPLATE-1.0.0" at line 9, column 1]
----
1<#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta> 
2 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#include "${fullTemplatesPath}/init_custom.ftl"> 
6<#include "${fullTemplatesPath}/utils/api-hotels.ftl"> 
7<#include "${fullTemplatesPath}/utils/json.ftl"> 
8<#include "${fullTemplatesPath}/utils/dictionary.ftl"> 
9<#assign dataHotels = getHotelsByBrand(Brand.getData())> 
10 
11 
12<!-- partial: component/block/brand-hero/brand-hero.hbs --> 
13<section class="brand-hero" data-component="brand-hero" data-scroll-component data-hotels="${toJSON(dataHotels, ['travelClickCode', 'hotelCode', 'state', 'articleId', 'city', 'country', 'title'])?html}"> 
14  <div class="brand-hero-wrapper"> 
15    <div class="visual-wrapper"> 
16      <#if (VideoFile?? && VideoFile.getData()?has_content) > 
17        <div class="video-wrapper main-visual"> 
18          <video autoplay muted loop src="${VideoFile.getData()}" class="visual" data-video-player ></video> 
19        </div> 
20      <#else> 
21        <!-- partial: component/general/picture/picture.hbs --> 
22        <#if ImageLarge.getData()?? && ImageLarge.getData() != ""> 
23        <picture class="main-visual" data-component="picture"> 
24          <source media="(min-width: 1440px)" srcset="${ImageLarge.getData()}"> 
25          <source media="(min-width: 768px)" srcset="${ImageSmall.getData()}"> 
26          <img class="visual" src="${ImageSmall.getData()}"  alt="${ImageLarge.getAttribute("alt")}" data-fileentryid="${ImageLarge.getAttribute("fileEntryId")}"> 
27        </picture> 
28        </#if> 
29        <!-- / component/general/picture/picture.hbs --> 
30      </#if> 
31    </div> 
32    <div class="form-wrapper"> 
33      <div class="input-container" data-hero-item> 
34        <div class="title" data-hero-item> 
35          ${_CREATE_MEMORIES[locale]} 
36        </div> 
37        <div data-hero-item> 
38 
39          <!-- partial: component/general/auto-complete-input-field/auto-complete-input-field.hbs --> 
40          <div class="auto-complete-input-field" data-component="auto-complete-input-field"> 
41 
42            <div class="input-field-wrapper"> 
43              <label class="custom-input-label input-field-copy" for="brandHeroSearch" data-input-label> 
44                <span class="copy">${_SEARCH_DESTINATIONS[locale]}</span> 
45              </label> 
46              <div class="input-wrapper is-bar"> 
47 
48 
49                <input class="input-field input-field-copy" id="brandHeroSearch" type="text" placeholder="" data-input-field value=""> 
50                <div class="type-ahead input-field-copy" data-type-ahead></div> 
51 
52 
53 
54 
55                <script type="text/html" id="suggestion-item-template"> 
56                  <div class="option" data-bind="{ 
57                  html: label, 
58                  css: { 
59                    selected: value === ($data.selected && $data.selected() && $data.selected().value) 
60                  }, 
61                  click: $data.click, 
62                  }"></div> 
63                </script> 
64 
65 
66 
67                <div class="suggestions-wrapper" data-suggestions-list> 
68                </div> 
69 
70 
71 
72              </div> 
73 
74 
75 
76            </div> 
77 
78 
79 
80          </div> 
81          <!-- / component/general/auto-complete-input-field/auto-complete-input-field.hbs --> 
82        </div> 
83      </div> 
84      <div class="link-wrapper" data-hero-item> 
85 
86        <!-- partial: component/general/cta-link/cta-link.hbs --> 
87        <a href="${homeURL}/destinations#hero" class="cta-link outlined destination-link" title="${_EXPLORE_OUR_DESTINATIONS[locale]}" data-component="cta-link"> 
88          <span class=" copy">${_EXPLORE_OUR_DESTINATIONS[locale]}</span> 
89 
90          <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
91          <div class="button-arrow direction-right size-small outlined destination-link" data-component="button-arrow"> 
92 
93            <!-- partial: component/general/icon/icon.hbs --> 
94            <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
95            <!-- / component/general/icon/icon.hbs --> 
96 
97            <!-- partial: component/general/icon/icon.hbs --> 
98            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
99            <!-- / component/general/icon/icon.hbs --> 
100            <div class="chevron-wrapper"> 
101 
102              <!-- partial: component/general/icon/icon.hbs --> 
103              <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
104              <!-- / component/general/icon/icon.hbs --> 
105            </div> 
106          </div> 
107          <!-- / component/general/button-arrow/button-arrow.hbs --> 
108        </a> 
109        <!-- / component/general/cta-link/cta-link.hbs --> 
110      </div> 
111    </div> 
112 
113      <div data-indicator-item> 
114        <div class="mobile-indicator"> 
115          <p>${_DISCOVER_MORE[locale]}</p> 
116          <!-- partial: component/general/icon/icon.hbs --> 
117          <span class="icon " data-component="icon" data-icon="chevron-down"></span> 
118          <!-- / component/general/icon/icon.hbs --> 
119        </div> 
120 
121        <!-- partial: component/general/scroll-indicator/scroll-indicator.hbs --> 
122        <div class="scroll-indicator" data-component="scroll-indicator" data-scroll-indicator data-scroll-component> 
123          <!-- partial: component/general/icon/icon.hbs --> 
124          <span class="icon " data-component="icon" data-icon="scroll-indicator"></span> 
125          <!-- / component/general/icon/icon.hbs --> 
126        </div> 
127        <!-- / component/general/scroll-indicator/scroll-indicator.hbs --> 
128      </div> 
129  </div> 
130  <div class="booking-form-wrapper" data-booking-form-wrapper> 
131 
132    <!-- partial: component/block/booking-form/booking-form.hbs --> 
133    <div class="booking-form" data-component="booking-form"> 
134      <div class="booking-form-content"> 
135        <form class="form" action="" data-booking-form> 
136        <input value="fiesta-americana" name="brand" type="hidden"> 
137          <div class="custom-input hotel-select select"> 
138            <div class="label-wrapper"> 
139              <label class="label" for="foo"> 
140                Hotel 
141              </label> 
142            </div> 
143            <div class="input"> 
144 
145              <!-- partial: component/general/icon/icon.hbs --> 
146              <span class="icon drop-down-icon" data-component="icon" data-icon="chevron-down"></span> 
147              <!-- / component/general/icon/icon.hbs --> 
148              <script type="text/html" id="hotel-option-template"> 
149                <option data-bind="{ 
150                    html: $data.title, 
151                    value: $index, 
152                  }"></option> 
153              </script> 
154              <select class="placeholder-copy" name="hotel" data-hotel-selection required></select> 
155            </div> 
156          </div> 
157 
158          <div class="date-picker-wrapper"> 
159 
160            <!-- partial: component/general/date-range-picker/date-range-picker.hbs --> 
161 
162            <div class="date-range-picker" data-component="date-range-picker"  data-locale="${locale}" data-scroll-component data-start-label="${_ARRIVAL_DATE[locale]}" data-end-label="${_DEPARTURE_DATE[locale]}" data-max-date-in-months-from-now="24" data-required="true" data-default-number-of-nights="2" data-minimum-nights="1" data-start-placeholder="${_SELECT[locale]}" data-end-placeholder="${_SELECT[locale]}"> 
163            </div> 
164            <!-- / component/general/date-range-picker/date-range-picker.hbs --> 
165          </div> 
166          <div class="persons-total"> 
167 
168            <!-- partial: component/form/custom-number-input/custom-number-input.hbs --> 
169            <div class="custom-input number total-adults" data-component="custom-input-number" data-value="2" data-min="1" data-max="10"> 
170              <div class="label-wrapper"> 
171                <label class="label"> 
172                  ${_ADULTS[locale]} 
173                </label> 
174              </div> 
175              <div class="input"> 
176                <div class="placeholder-copy"> 
177                  <div class="button" data-minus-button> 
178 
179                    <!-- partial: component/general/icon/icon.hbs --> 
180                    <span class="icon total-adults" data-component="icon" data-icon="minus"></span> 
181                    <!-- / component/general/icon/icon.hbs --> 
182                  </div> 
183                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="1" max="10" value="2"> 
184                  <div class="button" data-plus-button> 
185 
186                    <!-- partial: component/general/icon/icon.hbs --> 
187                    <span class="icon total-adults" data-component="icon" data-icon="plus"></span> 
188                    <!-- / component/general/icon/icon.hbs --> 
189                  </div> 
190                </div> 
191              </div> 
192              <input type="hidden" name="adults" min="1" max="6" value="2" data-bind="value: value"> 
193            </div> 
194            <!-- / component/form/custom-number-input/custom-number-input.hbs --> 
195 
196            <!-- partial: component/form/custom-number-input/custom-number-input.hbs --> 
197            <div class="custom-input number total-children" data-component="custom-input-number" data-value="0" data-min="0" data-max="3"> 
198              <div class="label-wrapper"> 
199                <label class="label"> 
200                  ${_CHILDREN[locale]} 
201                </label> 
202              </div> 
203              <div class="input"> 
204                <div class="placeholder-copy"> 
205                  <div class="button" data-minus-button> 
206 
207                    <!-- partial: component/general/icon/icon.hbs --> 
208                    <span class="icon total-children" data-component="icon" data-icon="minus"></span> 
209                    <!-- / component/general/icon/icon.hbs --> 
210                  </div> 
211                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="0" max="3" value="0"> 
212                  <div class="button" data-plus-button> 
213 
214                    <!-- partial: component/general/icon/icon.hbs --> 
215                    <span class="icon total-children" data-component="icon" data-icon="plus"></span> 
216                    <!-- / component/general/icon/icon.hbs --> 
217                  </div> 
218                </div> 
219              </div> 
220              <input type="hidden" name="children" min="0" max="6" value="0" data-bind="value: value"> 
221            </div> 
222            <!-- / component/form/custom-number-input/custom-number-input.hbs --> 
223            <div class="custom-input number total-infants" data-component="custom-input-number" data-value="0" data-min="0" data-max="3"> 
224              <div class="label-wrapper"> 
225                <label class="label">${_INFANTS[locale]}</label> 
226              </div> 
227              <div class="input"> 
228                <div class="placeholder-copy"> 
229                  <div class="button" data-minus-button> 
230                    <!-- partial: component/general/icon/icon.hbs --> 
231                    <span class="icon total-infants" data-component="icon" data-icon="minus"></span> 
232                    <!-- / component/general/icon/icon.hbs --> 
233                  </div> 
234                  <input class="value" type="number" data-bind="value: String(value()).padStart(2, '0')" maxlength="2" min="0" max="3" value="0"> 
235                  <div class="button" data-plus-button> 
236                    <!-- partial: component/general/icon/icon.hbs --> 
237                    <span class="icon total-infants" data-component="icon" data-icon="plus"></span> 
238                    <!-- / component/general/icon/icon.hbs --> 
239                  </div> 
240                </div> 
241              </div> 
242              <input type="hidden" name="infants" min="0" max="3" value="0" data-bind="value: value"> 
243            </div> 
244			<!-- / component/form/custom-number-input/custom-number-input.hbs --> 
245          </div> 
246          <div class="cta-wrapper"> 
247            <!-- partial: component/general/cta-button/cta-button.hbs --> 
248            <@cta.button text="${_BOOK_HERE[locale]}" class="primary"/> 
249            <!-- / component/general/cta-button/cta-button.hbs --> 
250 
251            <input type="submit" style="display: none"> 
252            <!-- partial: component/general/cta-button/cta-button.hbs --> 
253            <@cta.button text="${_FLIGHT_AND_HOTEL[locale]}" url="${_FLIGHT_AND_HOTEL_LINK[locale]}" class="primary is-outline hotel-link" /> 
254            <!-- / component/general/cta-button/cta-button.hbs --> 
255            <a href="#" class="cancel-link" data-reservation-cancel> 
256              <!-- partial: component/general/icon/icon.hbs --> 
257              <span class="icon " data-component="icon" data-icon="menu-cross"></span> 
258              <!-- / component/general/icon/icon.hbs --> 
259            </a> 
260          </div> 
261        </form> 
262      </div> 
263    </div> 
264    <!-- / component/block/booking-form/booking-form.hbs --> 
265  </div> 
266</section> 
267<!-- / component/block/brand-hero/brand-hero.hbs --> 
Se ha producido un error al procesar la plantilla.
Java method "com.liferay.portal.kernel.util.Http.URLtoString(String)" threw an exception when invoked on com.liferay.portal.template.TemplateContextHelper$HttpWrapper object "com.liferay.portal.template.TemplateContextHelper$HttpWrapper@38712bc9"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local response = CONSTANTS.CURRENT_H...  [in template "fiesta_americana_theme_SERVLET_CONTEXT_/templates/utils/api-offers.ftl" in function "getOffersByBrand" at line 6, column 3]
	- Reached through: #assign offersData = getOffersByBrand...  [in template "20115#20151#OFFERS-CAROUSEL-TEMPLATE-1.0.0" at line 9, column 1]
----
1<#import "${fullTemplatesPath}/shared/cta-button.ftl" as cta> 
2 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#include "${fullTemplatesPath}/utils/api-offers.ftl"> 
6<#include "${fullTemplatesPath}/utils/dictionary.ftl"> 
7<#include "${fullTemplatesPath}/utils/media-links.ftl"> 
8<#include "${fullTemplatesPath}/utils/general.ftl"> 
9<#assign offersData = getOffersByBrand(Brand.getData())> 
10<!-- partial: component/block/hotel-info/hotel-info.hbs --> 
11<#if offersData?size != 0> 
12  <#assign low = [] /> 
13  <#assign high = [] /> 
14  <#list offersData as offer> 
15    <#if offer.metaTags?seq_contains("portal") > 
16 
17      <#if offer.metaTags?seq_contains("p1") > 
18        <#assign low = low + [offer] /> 
19      <#else> 
20        <#assign high = high + [offer] /> 
21      </#if> 
22    <#else> 
23      <h1>Error: no se encontraron Ofertas con el tag 'portal' para la marca ${Brand.getData()}</h1> 
24    </#if> 
25  </#list> 
26 
27  <#assign orderedOffers = low + high > 
28 
29 
30  <section class="hotel-info content-spacing is-hidden" data-component="hotel-info" data-scroll-component> 
31    <div class="content-wrapper"> 
32      <div class="main-title-wrapper"> 
33        <h2 class="heading-2 main-title"> 
34          <span>${Title.getData()}</span> 
35        </h2> 
36      </div> 
37    </div> 
38 
39    <div data-visual-container> 
40      <ol class="hotel-list" data-visual-carousel> 
41      <#list orderedOffers as Offer> 
42        <#assign medialinks = [] /> 
43        <#if Offer.mediaLinks?? && Offer.mediaLinks?has_content> 
44          <#assign medialinks = Offer.mediaLinks/> 
45        </#if> 
46        <#assign imageLarge = getOfferImageXL(medialinks) /> 
47        <#assign imageSmall = getOfferImageXS(medialinks) /> 
48 
49        <#--  <#assign tomorrow = (.now?long + 1 * 86400000)?number_to_date?string("dd/MM/yyyy")/>  --> 
50        <#--  <#assign now = now?string("dd/MM/yyyy") />  --> 
51        <#--  <#assign languageid = (locale == 'es_ES')?then(2,1) />  --> 
52        <#--  <#assign promoURL = "https://reservations.travelclick.com/"+Offer.travelclickHotelCode+"?hotelCode="+Offer.travelclickHotelCode +"?datein="+now+"&dateout="+tomorrow+"&languageid="+languageid+"&adults=0&children=0&rooms=1"/>  --> 
53        <#assign promoURL = Offer.travelclickHotelCode /> 
54 
55        <li class="hotel-item" data-visual-item> 
56          <div class="content-wrapper"> 
57            <div class="hotel"> 
58              <div class="copy-wrapper"> 
59                <div class="copy-padding"> 
60                  <div class="title-wrapper"> 
61                    <span class="overline-type">${_HOTELS_FROM[locale]}</span> 
62                    <h3 class="heading-4 title"> 
63                      <span>${Offer.name}</span> 
64                    </h3> 
65                  </div> 
66 
67                  <p class="copy-1 copy">${removeHtml(Offer.shortDescription)}</p> 
68 
69                  <div class="price-button-wrapper"> 
70 
71                    <!-- partial: component/general/from-price/from-price.hbs --> 
72                    <div class="from-price price-size-" data-component="from-price"> 
73                     <!-- <span class="from-copy detail-type">${_STARTING_FROM[locale]}</span> --> 
74                      <div class="price-wrapper"> 
75                        <span class="price-copy">${Offer.amount}</span> 
76                        <!--<span class="currency-copy detail-type">${_CURRENCY[locale]}</span>--> 
77                      </div> 
78                    </div> 
79                    <!-- / component/general/from-price/from-price.hbs --> 
80 
81                    <!-- partial: component/general/cta-button/cta-button.hbs --> 
82                    <@cta.button text="${_SEE_MORE[locale]}" url=promoURL class="primary"/> 
83                    <!-- / component/general/cta-button/cta-button.hbs --> 
84                  </div> 
85                </div> 
86              </div> 
87 
88              <div class="visual-wrapper" data-visual-wrapper> 
89                <!-- partial: component/general/picture/picture.hbs --> 
90                <picture class="main-visual" data-component="picture"> 
91                  <source media="(min-width: 768px)" srcset="${imageLarge}"> 
92                  <img class="visual" src="${imageSmall}" alt="${Offer.name}"> 
93                </picture> 
94                <!-- / component/general/picture/picture.hbs --> 
95              </div> 
96            </div> 
97          </div> 
98        </li> 
99      </#list> 
100      </ol> 
101    </div> 
102 
103    <div class="content-wrapper timeline-wrapper"> 
104      <div class="progress-bounds" data-bounds> 
105        <div class="progress-bar-wrapper" data-progress-bar-wrapper> 
106          <div class="progress-bar" data-progress-bar> 
107            <div class="progress" data-progress></div> 
108          </div> 
109          <div class="progress-knob" data-progress-knob> 
110            <!-- partial: component/general/icon/icon.hbs --> 
111            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
112            <!-- / component/general/icon/icon.hbs --> 
113          </div> 
114          <ol class="progress-markers" data-progress-markers> 
115          <#list orderedOffers as Offer> 
116            <li class="progress-marker-wrapper"> 
117              <div class="progress-marker" data-progress-marker> 
118                <div class="marker-internal-wrapper"> 
119                  <!-- partial: component/general/icon/icon.hbs --> 
120                  <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
121                  <!-- / component/general/icon/icon.hbs --> 
122                </div> 
123                <div class="marker-external-wrapper"> 
124                  <!-- partial: component/general/icon/icon.hbs --> 
125                  <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
126                  <!-- / component/general/icon/icon.hbs --> 
127                </div> 
128              </div> 
129              <span class="promo-name" data-promo-name> 
130                <span class="line-1"></span> 
131                <span>${Offer.name}</span> 
132              </span> 
133            </li> 
134          </#list> 
135          </ol> 
136        </div> 
137      </div> 
138 
139      <div class="bullets-cta-wrapper"> 
140        <div class="bullets-wrapper"> 
141          <!-- partial: component/general/bullets/bullets.hbs --> 
142          <ol class="bullet-list" data-bullet-list data-component="bullets"> 
143          <#list orderedOffers as Offer> 
144            <li class="bullet" data-bullet> 
145              <span class="icon"></span> 
146            </li> 
147          </#list> 
148          </ol> 
149          <!-- / component/general/bullets/bullets.hbs --> 
150        </div> 
151 
152        <!-- partial: component/general/cta-link/cta-link.hbs --> 
153        <a href="${CtaLink.getData()}" class="cta-link outlined " title="${CtaLink.CtaText.getData()}" data-component="cta-link"> 
154          <span class="button-type copy">${CtaLink.CtaText.getData()}</span> 
155          <!-- partial: component/general/button-arrow/button-arrow.hbs --> 
156          <div class="button-arrow direction-right size-small outlined " data-component="button-arrow"> 
157 
158            <!-- partial: component/general/icon/icon.hbs --> 
159            <span class="icon circle-hover-icon" data-component="icon" data-icon="circle"></span> 
160            <!-- / component/general/icon/icon.hbs --> 
161 
162            <!-- partial: component/general/icon/icon.hbs --> 
163            <span class="icon circle-icon" data-component="icon" data-icon="circle"></span> 
164            <!-- / component/general/icon/icon.hbs --> 
165            <div class="chevron-wrapper"> 
166 
167              <!-- partial: component/general/icon/icon.hbs --> 
168              <span class="icon chevron-icon" data-component="icon" data-icon="chevron-right"></span> 
169              <!-- / component/general/icon/icon.hbs --> 
170            </div> 
171          </div> 
172          <!-- / component/general/button-arrow/button-arrow.hbs --> 
173        </a> 
174        <!-- / component/general/cta-link/cta-link.hbs --> 
175      </div> 
176    </div> 
177 
178  </section> 
179  <!-- / component/block/hotel-info/hotel-info.hbs --> 
180 
181<#else> 
182  <h1>Error: no se encontraron Ofertas para la marca ${Brand.getData()}</h1> 
183</#if>