Слинг печатает неправильное значение внутри href - PullRequest
0 голосов
/ 31 октября 2018

Мне нужно показать два разных баннера в двух разных местах: первый находится внутри страницы с благодарностью, а второй - внутри письма с подтверждением. В обоих случаях мне нужно напечатать некоторую информацию внутри 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-адрес, аналогичный первому.

1 Ответ

0 голосов
/ 04 декабря 2018

При подключении 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;
}
...