9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138

Как использовать th:each для передачи строки в код JavaScript ,встроенный в html страницу

31.01.2022, 18:09. Показов 1201. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я начинаю с создания тестового списка со ссылками на изображение. Затем я передаю его в модель под именем _links

Java
1
2
3
4
5
6
7
8
9
10
11
@GetMapping("/{id}")
public String showItem(@PathVariable int id, Model model)
{
    List<String> imageLinks = new ArrayList<>();
    imageLinks.add("/resources/static/images/products/1/product_test_image.jpg");
    imageLinks.add("/resources/static/images/products/1/product_test_image2.jpg");
    imageLinks.add("/resources/static/images/products/1/product_test_image3.jpg");
        
    model.addAttribute("_links", imageLinks);
    return "item/item";
}
Затем в определенном месте html-кода рисую количество кнопок, равное количеству картинок в списке _links. Я могу передать номер цикла в метод imgSrc. Но я не могу передать саму строку ссылки. Когда я пытаюсь отправить его, страница перестает нормально отображаться. Поэтому эта строка закомментирована.

HTML5
1
2
3
4
5
<div th:each="link, iStat : ${_links}">
        <span id="current_img" th:text="${link}"></span>
        <input type="image" th:src="${link}" alt="miniature" th:onclick="'imgSrc(\'' + ${iStat.index} + '\');'" style="width: 80px; height: 80px; margin: 3px">
   <!-- <input type="image" th:src="${link}" alt="miniature" th:onclick="'imgSrc(\'' + ${link} + '\');'" style="width: 80px; height: 80px; margin: 3px"> -->
    </div>
И, наконец, метод, который я вызываю. Последняя строка закомментирована, но она показывает, чего я хочу достичь. А именно, нажав на картинку в списке, я хочу изменить большую картинку на новую, выбранную в цикле.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script language="JavaScript">
 
            var selectedImage = document.getElementById("current_img");
 
            var mainImage = document.getElementById("main_product_image");
            var debug = document.getElementById("debug");
            var debug2 = document.getElementById("debug2");
            
            function imgSrc(link)
            {
                mainImage.src = selectedImage.innerHTML;
                debug.innerHTML = selectedImage.innerHTML;
                debug2.innerHTML = link;
            //  mainImage.src = link;
            }
 
</script>
Любопытно, что ссылка нормально передается в файл th:text.

HTML5
1
<span id="current_img" th:text="${link}"></span>
Фиксированное количество кнопок отрисовывать не вариант потому что количество фотографий для каждого предмета может отличатся. Заранее спасибо всем, кто ответит.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2022, 18:09
Ответы с готовыми решениями:

Как разместить скрипт код рекламы, если разрешается использовать HTML-разметку, но не допускается использование Javascript
Как разместить скрипт код рекламы на java, если разрешается использовать HTML-разметку, но не допускается использование Javascript. И...

Код javascript для создания теста, используя html form и javascript
Привет, собственно, вот, в чём вопрос. У меня есть форма html: &lt;!DOCTYPE HTML&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;&lt;/title&gt; ...

Как добавить HTML код (на сервере) на HTML страницу?
Как добавить часть HTML кода, что хранится в переменной cardsData в index.html? server.js const express = require('express'); ...

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
31.01.2022, 19:25
https://www.baeldung.com/thymeleaf-iteration
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
01.02.2022, 18:12  [ТС]
Я там был до того как задать вопрос, ответа не нашёл.
0
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
01.02.2022, 19:51
SERG__ZV, попробуй так, тогда
HTML5
1
th:onclick="|imgSrc(${iStat.index})|"
Добавлено через 34 минуты
Не посмотрел - там строки в ${link}.
HTML5
1
th:onclick="imgSrc([[${link}]])"
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
01.02.2022, 20:14
Лучший ответ Сообщение было отмечено SERG__ZV как решение

Решение

ты можешь например this передать в свой onclick

Добавлено через 55 секунд
Вообще кто мешает посмотреть, какой текст в итоге генерируется шаблонизатором?
1
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138
02.02.2022, 17:51  [ТС]
Помог вариант с передачей элемента самого себя в метод. Я просто мало ещё в вёрстке соображаю не знал что так можно.
Вот рабочий вариант выдающий ссылку на изображение.

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
 
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Item name</title>
    <link rel="stylesheet" type="text/css" href="/resources/static/css/styles.css">
 
</head>
<body style="margin: 0">
    <div class="page" style="margin: 0">
        <div th:each="link, iStat : ${_links}">
            <input type="image" th:src="${link}" value="Click me" onclick="buttonClick(this)">
        </div>
    </div>
 
    <script type="text/javascript">
 
        function buttonClick(e)
        {
            var att = e.getAttribute('src');
            alert(att);
        }
 
    </script>
</body>
</html>
1
502 / 348 / 134
Регистрация: 14.06.2016
Сообщений: 669
02.02.2022, 17:53
Перевод документации Thymeleaf
https://habr.com/ru/post/352272/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2022, 17:53
Помогаю со студенческими работами здесь

XE7 как использовать встроенный компонент HotKey1 для горячих клавиш?
Здравствуйте кто знает как использовать компонент HotKey1? пример мне надо по нажатию клавиш Alt+A или любой другой измененный в...

Как на страницу WordPress добавить код JavaScript?
Т.е. создаю новую страницу, переключаюсь на вид HTML, вставляю скрипт, просматриваю созданную страницу, результат ноль. Просматриваю...

Как встроить свой JavaScript код на страницу 1C Битрикс
Доброго всем времени суток) Мне нужно встроить свой JavaScript код в а именно его: var info = &lt;?php echo json_encode($arGros); ?&gt;;...

PHP встроенный в HTML. Почему не работает код?
При выполнении возникает ошибка: Undefined variable i; &lt;table&gt; &lt;? foreach (range(1, 100) as $i) {?&gt; &lt;tr&gt; ...

Код счетчика посещения для сайта на javascript html
Готовый код счетчика посещений на javascript. По функционалу ничем не уступает стандартным счетчикам типа мэил и лайвинтернет. Сайт не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru