Слинг печатает неправильное значение внутри href

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

Я предполагаю, что ваш контроллер не инициализировался должным образом, из-за чего все поля в объектах данных и бронирования равны нулю. Попробуйте распечатать эти значения за пределами вашего тега img и посмотрите, есть ли у них фактические значения. Если да, проверьте свои журналы и посмотрите, не возникла ли проблема при инициализации модели / класса использования стропа. Однако я могу ошибаться.

rakhi4110 31.10.2018 14:03
0
1
94
1

Ответы 1

При прикреплении 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;
}

Другие вопросы по теме