Мне нужно показать два разных баннера в двух разных местах: первый находится внутри страницы с благодарностью, а второй - внутри письма с подтверждением. В обоих случаях мне нужно напечатать некоторую информацию внутри URL.
В первом случае баннер генерируется скриптом, в котором я передаю некоторые значения с помощью Sling
<sly data-sly-use.data="........controller.BookingFormModificaController"></sly> <sly data-sly-use.booking=".......controller.BookingConferma"></sly> <div id='b_container'> <script type = 'text/javascript' id='sp_widget' data-hash='00000' datacontainer='b_container' data-size='1080x500' data-tpncy='false' src='example.com/js/booking_sp_widget.js?checkin=${ data.depDateOld }&checkout=${ data.retDateOld }&iata_orr=1&iata=${ data.arrivalAirport }&lang=${ booking.selectedLanguage }&selected_currency=${ booking.ctx.currency } '></script> </div>
Это правильный результат:
src="http://www.example.com/00000?fid=1540980292381&checkin=2018-12-17&checkout=2018-12-22&iata_orr=1&iata=MXP&lang=it&selected_currency=EUR&dsize=1080,500&dtpncy=false&dtsize=&dmsize="
Во втором случае (электронная почта) это не скрипт, а просто img с тегом, как показано ниже
<sly data-sly-use.data="........controller.BookingFormModificaController"></sly> <sly data-sly-use.booking=".......controller.BookingConferma"></sly> <a href="https://example.com/searchresults.it.html?aid=1503416&checkin=${ data.depDateOld }&checkout=${ data.retDateOld }&iata_orr=1&iata=${ data.arrivalAirport }&lang=${ booking.selectedLanguage }&selected_currency=${ booking.ctx.currency }"> <img src="https://via.placeholder.com/1080x300" width="100%" alt="" style="margin:0; padding:0;border:none;display:block;" /> </a>
но в этом случае после отправки письма оно имеет следующий URL:
href="https://example.com/searchresults.it.html?aid=1503416&checkin=&checkout=&iata_orr=1&iata=&lang=&selected_currency="
Моя цель - создать URL-адрес, аналогичный первому.
При подключении queryParameter к ссылке в HTL / Sightly вы можете легко использовать встроенный компоновщик ссылок. Просто постройте Карту в SlingModel, к которой вы готовы.
HTL
<a class="a-link" href="${ myModel.linkPath @ extension='json', query=myModel.queryParameterMap }">...</a>
Модель слинга
public static Map<String, String> getQueryParameterMap(final Page currentPage) { final Map<String, String> map = new HashMap<>(); if (Objects.nonNull(currentPage)) { map.put("someParameterA", "someValueA"); map.put("someParameterB", "someValueB"); } return map; }