Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
9 / 9 / 0
Регистрация: 16.03.2014
Сообщений: 138

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

31.01.2022, 18:09. Показов 1163. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru